【问题标题】:Understanding undefined as argument [duplicate]将未定义理解为参数[重复]
【发布时间】:2013-06-15 13:16:40
【问题描述】:

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

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

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

【问题讨论】:

  • 这是一个常见问题...让我们寻找另一个问题将其关闭为重复...

标签: javascript


【解决方案1】:

在旧版浏览器中,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

【讨论】:

    【解决方案2】:

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

    例如:

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

    可以缩小为:

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

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

    【讨论】:

    • 短名称是什么意思?你能举个例子吗?谢谢
    • 缩小器可能会重写函数以使用u 而不是undefined,从而节省一些字符。
    • 有趣,感谢您的最新评论 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2020-01-14
    • 2021-01-30
    • 2016-06-14
    • 2017-12-12
    • 1970-01-01
    相关资源
    最近更新 更多