我为什么要使用下划线的isUndefined(x)而不是x === undefined?

时间:2014-06-04 16:46:18

标签: javascript underscore.js

使用isUndefined有什么好处吗?是否值得额外的函数调用?它不再具有可读性。

1 个答案:

答案 0 :(得分:8)

可以隐藏名称undefined。也就是说,有人可以这样做

var undefined = 5;

并破坏使用x === undefined的代码(请参阅底部的注释)。要安全地解决这个问题,您可以使用

typeof x === 'undefined'

x === void 0

这正是下划线功能的作用。


注意:自ECMAScript 5起,undefined是只读的。在旧版浏览器中,可以重新定义全局undefined。即使在较新的浏览器中,undefined也可以被局部变量遮蔽:

function f() {
  var undefined = 5;
  return undefined;
}
f() // returns 5