Javascript _.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

为什么Underline.js的isUndefined是这样定义的

\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