我看到 javascript 库是这样设置的:
(function (global, undefined) {
//..
})(this)
在这种情况下是什么意思undefined
?
我看到 javascript 库是这样设置的:
(function (global, undefined) {
//..
})(this)
在这种情况下是什么意思undefined
?
在较旧的浏览器中,undefined
不是immutable或non-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
设置undefined
为函数的参数允许缩小器用更短的名称替换它。
例如这个:
(function (global, undefined) {
alert(undefined)
})(this)
可以缩小到这个:
(function(a,b){alert(b)})(this)
因此,函数内所有出现的undefined
变量都将重命名为一些短名称,例如b
. 无论变量名如何,它都具有相同的值,因此将用于相同的目的。