将undefined理解为参数

时间:2013-06-15 13:16:41

标签: javascript

我看到javascript库设置如下:

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

在此背景下undefined的含义是什么?

2 个答案:

答案 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之类的短名称。无论变量名称如何,它都具有相同的值,因此将起到相同的作用。