关于javascript:为什么要重用`undefined`?

Why does one reuse `undefined`?

本问题已经有最佳答案,请猛点这里访问。

在John Resig关于他如何构建jQuery 1.4的幻灯片中,他提到了一个点,他在jQuery闭包中添加了一个undefined变量,因为"我们可以重用(变量)"。

undefined不是普通变量:

1
2
3
4
> var undefined = 4
  undefined
> undefined
  undefined

因此,我们知道undefined不是变量。 那么为什么在jQuery源代码中重新定义undefined呢?

Slide 31


因为在某些JavaScript引擎中,可以将undefined设置为一个值。 这是为了确保undefined真的是undefined


除了+ Rocket Hazmat的答案之外,当您的代码经常使用undefined时,您可以在压缩后稍微减小文件大小。 那是因为局部变量undefined的名称可能被压缩器损坏,而全局undefined可能不会:

1
2
3
4
5
6
7
8
foo === undefined;
//      ^----- don't touch this, put"undefined" in the compressed result

(function (undefined) {
    foo === undefined;
})();
// may however be mangled to
(function(u){foo===u})();