为什么以这种方式定义了underscore.js的isUndefined?
_.isUndefined = function(obj) {
return obj === void 0;
};
为什么这不起作用?
typeof obj === 'undefined'
答案 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'
,但你没有得到任何错误。所以,一个可能的原因是更容易调试! :)