_.isUndefined实现

时间:2012-11-19 23:03:25

标签: javascript underscore.js

为什么以这种方式定义了underscore.js的isUndefined?

_.isUndefined = function(obj) { return obj === void 0; };

为什么这不起作用?

typeof obj === 'undefined'

3 个答案:

答案 0 :(得分:14)

好的,开始typeof obj === 'undefined'的速度较慢,因为您可以轻松验证。

那么问题就是为什么进行比较

obj === void 0 

VS

obj === undefined

让我们看看:

void 0;会返回一元运算符void的结果,该运算符将始终返回undefined(即void 1无效)

undefined指向全局变量undefined

在正常情况下两者是相同的。我认为void 0是首选,因为可以使用局部变量undefined来遮蔽undefined :)这是愚蠢的,但它会发生。

答案 1 :(得分:3)

它的编写方式可能更有效。为什么不分析这两个定义并看看?

答案 2 :(得分:2)

如果您写了viod,则会出现语法错误。你拼错了“未定义”为'undeifned',但你没有得到任何错误。所以,一个可能的原因是更容易调试! :)