【发布时间】:2013-06-15 13:16:40
【问题描述】:
我看到 javascript 库是这样设置的:
(function (global, undefined) {
//..
})(this)
undefined 在这种情况下是什么意思?
【问题讨论】:
-
这是一个常见问题...让我们寻找另一个问题将其关闭为重复...
标签: javascript
我看到 javascript 库是这样设置的:
(function (global, undefined) {
//..
})(this)
undefined 在这种情况下是什么意思?
【问题讨论】:
标签: javascript
在旧版浏览器中,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
【讨论】:
将undefined 设置为函数的参数允许缩小器用更短的名称替换它。
例如:
(function (global, undefined) {
alert(undefined)
})(this)
可以缩小为:
(function(a,b){alert(b)})(this)
因此,函数内所有出现的undefined 变量都将重命名为一些短名称,例如b。无论变量名如何,它都具有相同的值,因此将起到相同的作用。
【讨论】:
u 而不是undefined,从而节省一些字符。