Другие объяснили undefined. undefinedэто как глобальная переменная, которая может быть переопределена на любое значение. Этот метод заключается в предотвращении взлома всех неопределенных проверок, если кто-то что-то написал undefined = 10. Аргумент, который никогда не передается, гарантированно будет действительным undefinedнезависимо от значения переменной undefined .
Причина прохождения окна может быть проиллюстрирована на следующем примере.
(function() {
console.log(window);
...
...
...
var window = 10;
})();
Что записывает консоль? Значение windowобъекта верно? Неправильно! 10? Неправильно! Это логи undefined. Интерпретатор Javascript (или JIT-компилятор) переписывает его таким образом -
(function() {
var window; //and every other var in this function
console.log(window);
...
...
...
window = 10;
})();
Однако, если вы получите windowпеременную в качестве аргумента, нет переменной var и, следовательно, никаких сюрпризов.
Я не знаю, делает ли это jQuery, но если windowпо какой-либо причине вы переопределяете локальную переменную где-либо в вашей функции, было бы неплохо позаимствовать ее из глобальной области видимости.