为什么 underscore.js 的 isUndefined 是这样定义的?
_.isUndefined = function(obj) {
return obj === void 0;
};
为什么这行不通?
typeof obj === 'undefined'
为什么 underscore.js 的 isUndefined 是这样定义的?
_.isUndefined = function(obj) {
return obj === void 0;
};
为什么这行不通?
typeof obj === 'undefined'
好的,一开始typeof obj === 'undefined'
比较慢,因为您可以轻松验证。
那么问题是为什么要进行比较
obj === void 0
对比
obj === undefined
让我们来看看:
void 0;
void
返回将始终返回的一元运算符的结果undefined
(即void 1
没有区别)
undefined
指向全局变量undefined
。
正常情况下两者是一样的。我认为虽然void 0
是首选,因为可以undefined
使用局部变量进行遮蔽undefined
:) 这很愚蠢,但它确实发生了。
它的编写方式可能更有效。您为什么不分析这两个定义并查看?
如果你写了viod
,你会得到一个语法错误。您将“未定义”拼写为'undeifned'
,但您没有收到任何错误。所以,一个可能的原因是更容易调试!:)