0

我看到 javascript 库是这样设置的:

   (function (global, undefined) {
      //..
    })(this)

在这种情况下是什么意思undefined

4

2 回答 2

4

在较旧的浏览器中,undefined不是immutablenon-writable。设置undefined为未使用的函数参数的名称意味着它是undefined,即使它被设置在更高的范围内。

// Old browser
undefined = 1;
undefined; // 1

// Modern browser
undefined = 1;
undefined; // undefined

需要注意的是,不可写性只适用于全局范围,以下两种情况都是正确的;

(function () {         // creating a new scope means..
    var undefined = 1; // this is now different to the `undefined` global
    return undefined;  // so can be written to, e.g. set as 1
}()); // 1
于 2013-06-15T13:17:32.380 回答
1

设置undefined为函数的参数允许缩小器用更短的名称替换它。

例如这个:

(function (global, undefined) {
    alert(undefined)
})(this)

可以缩小到这个:

(function(a,b){alert(b)})(this)

因此,函数内所有出现的undefined变量都将重命名为一些短名称,例如b. 无论变量名如何,它都具有相同的值,因此将用于相同的目的。

于 2013-06-15T13:18:38.007 回答