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