Почему jQuery имеет undefined в своей сигнатуре аргумента и почему он снова передает окно?

Я вижу, что jQuery завернут...

(function( window, undefined ) {
   ...
})(window);

Источник.

Я вижу, что он снова проходит в window (мое предположение, чтобы сделать его быстрее), но почему там undefined и он не передается в функцию self invoking?

Мое предположение - защитить jQuery от какого-то бозо...

var undefined = 'defined';

В этом случае, undefined будет строка 'defined', и это плохо.

Если я прав (всегда первый: P), то это умный способ гарантировать, что undefined всегда действительно undefined.

Я прав? Может ли кто-нибудь уточнить? Проходит ли передача window, действительно, быстрее?

Спасибо.

Ответы