我正在查看jQuery代码的过去版本,似乎在每个版本they have this line of code里面的某个地方:
window.undefined = window.undefined;
我无法理解为什么这很重要,更重要的是,这是做什么的。这似乎是将undefined
分配给undefined
,这对我来说毫无意义。
然而,这似乎很重要,我很好奇。
答案 0 :(得分:10)
window.undefined
并不总是存在,因此if (foo === undefined)
之类的代码会在旧浏览器中抛出ReferenceError,因为undefined
未定义(即未声明)。此代码只是确保undefined
已定义(未定义)。
undefined
。例如,您可以编写if (foo === void 0)
或类似if (foo === [][0])
的内容。
Later versions似乎假设所有支持的浏览器都存在window.undefined
。 most recent versions使用这样的模式:
(function( window, undefined ) {
...
})( window );
请注意,undefined
没有传递任何值,因此保证将其声明为局部变量,并且值为undefined
。
答案 1 :(得分:1)
使用它,jQuery定义了一个具有真实undefined
值的全局变量。拥有像myvar
这样的全局变量意味着你在window
范围内有这个变量(如window.mywar
),如果你在窗口范围内运行这个代码:
var myvar = "whatever";
javascript定义了您的变量,就像您运行了这个:
window.myvar = "whatever";
假设我们没有像myundefined
那样的全局变量,这意味着window.myundefined
不存在且window.myundefined
没有值,这意味着window.myundefined
真的是{{} 1}},然后您可以在窗口范围中创建一个名为undefined
的全局变量,如下所示:
undefined
并且此行与您上面提到的jQuery代码具有完全相同的结果。换句话说,jQuery可以使用此代码完成相同的操作:
window.undefined = window.myundefined
或
window.undefined = window.myundefined
这些都定义了一个没有值的全局变量。