Javascript _.isUndefined实现
为什么Underline.js的isUndefined是这样定义的Javascript _.isUndefined实现,javascript,underscore.js,Javascript,Underscore.js,为什么Underline.js的isUndefined是这样定义的 \uu0.isUndefined=函数(obj){ 返回对象===void 0; }; 为什么这个不行 typeof obj===“undefined”它的编写方式可能更有效。为什么不分析这两个定义并查看?如果您编写了viod,您将得到一个语法错误。您将“undefined”拼错为“undefined”,但您不会因此收到任何错误。因此,一个可能的原因是调试更容易!:) 好的,对于一个开始来说,typeof obj===“unde
\uu0.isUndefined=函数(obj){
返回对象===void 0;
};代码>
为什么这个不行
typeof obj===“undefined”
它的编写方式可能更有效。为什么不分析这两个定义并查看?如果您编写了viod
,您将得到一个语法错误。您将“undefined”拼错为“undefined”
,但您不会因此收到任何错误。因此,一个可能的原因是调试更容易!:) 好的,对于一个开始来说,typeof obj===“undefined”
比较慢,您可以很容易地验证这一点
那么,问题是为什么要进行比较
obj === void 0
vs
让我们看看:
void 0
返回一元运算符void
的结果,该运算符将始终返回未定义的
(即void 1
不会有任何区别)
undefined
指向全局变量undefined
在正常情况下,两者是相同的。我认为虽然void 0
是首选,因为可以使用局部变量undefined
对undefined
进行阴影处理(这很愚蠢,但确实发生了。typeof obj==“undefined”
可以工作,但字符串很难看。尽管如此,这些结果还是有意义的。通过typeof和字符串比较,您可以使用额外的哈希步骤来比较相等性。Perfs还建议Firefox在内部执行相同的操作,或者执行非常类似的操作。有趣。
obj === undefined