Другие объяснили 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
в качестве аргумента, переменная отсутствует и, следовательно, не будет сюрпризов.
Я не знаю, делает ли это jQuery, но если по какой-либо причине вы переопределяете локальную переменную window
в любом месте вашей функции, было бы неплохо позаимствовать ее из глобальной области.