Undefined является типом, но также является глобальной переменной.
У вас может быть модуль, который перезаписывает значение undefined, выполняя undefined = whatever
.
undefined
в на самом деле является неопределенным параметром функции, обертывающей весь код:
(function(window, undefined) {
// undefined is the undefined parameter
}(window));
Это безопасно, поскольку параметр undefined
находится в локальной области, и никто, кроме кода в этой функции, не может назначить ему .
Нет необходимости использовать параметр undefined
в качестве параметра при определении анонимной функции.
Если вы увидите вышеприведенную функцию, вы заметите, что она ожидает два параметра, кроме одного.
Почему undefined
необходимо восстановить?
, потому что, чтобы убедиться, что undefined
действительно undefined
в области между фигурными фигурными скобками, даже если кто-то написал что-то вроде undefined = "defined";
в глобальном масштабе, потому что undefined
может быть действительно переопределено.
Итак, если у вас есть что-то вроде
var undefined = 1;
(function(window, undefined) {
console.log(undefined); // output will be undefined not 1
}(window));