关于jquery:Javascript库中名为undefined的变量

variable named undefined in Javascript Libraries

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
How does this JavaScript/JQuery Syntax work: (function( window, undefined ) { })(window)?
What advantages does using (function(window, document, undefined) { … })(window, document) confer?

我见过很多javascript库创建一个名为"undefined"的变量,iam无法弄清楚它的用途,下面是从jQuery库复制的行

1
2
3
4
5
6
7
 * Date: Wed Feb 23 13:55:29 2011 -0500
 */
(function( window, undefined ) {

// Use the correct document accordingly with window argument (sandbox)
var document = window.document;
var jQuery = (function() {

请告诉我这样做的原因和好处!!


你会看到的是这样的:

1
2
3
(function(undefined) {
    /* lots of code */
}());

这将创建一个匿名函数并立即执行它。 该函数有一个名为undefined的参数。 由于没有传递给函数的参数,变量undefined实际上是Javascript原始值undefined

那么你为什么要这样做呢? 好吧,问题是你实际上可以创建一个名为undefined的变量并将其设置为你喜欢的任何东西,例如:

1
var undefined = 'some text';

然后,代码中的测试myvalue === undefined会产生意外结果。

带有名为undefined的参数的匿名函数实际上将undefined的值"重置"为原始值,以便您可以根据需要进行检查,而不必担心它是否具有正确的值。


它确保undefined实际上是undefined。 Paul Irish称之为混蛋效果,页面上包含的其他js可能会改变undefined的含义,然后你会得到意想不到的结果。