其他人已经解释了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
出于某种原因要在函数中的任何位置重新定义局部变量,则最好从全局范围中借用它。