我看到javascript库设置如下:
(function (global, undefined) {
//..
})(this)
在此背景下undefined
的含义是什么?
答案 0 :(得分:4)
在旧版浏览器中,undefined
不是不可变或不可写。将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
答案 1 :(得分:1)
将undefined
设置为函数的参数允许minifiers用更短的名称替换它。
例如:
(function (global, undefined) {
alert(undefined)
})(this)
可能会缩小到这个:
(function(a,b){alert(b)})(this)
因此,函数内所有出现的undefined
变量都将重命名为b
之类的短名称。无论变量名称如何,它都具有相同的值,因此将起到相同的作用。