2

可能重复:
javascript:javascript中变量
obj.length === +obj.length之前的加号

在查看underscore.js 的来源时,我遇到了这一行(#79)

//some stuff
} else if (obj.length === +obj.length) {
//do stuff

我不是 100% 确定这里发生了什么,任何人都可以解释 obj.length 值之前的“+”的目的吗?如果只是阅读,比较是否相同:

} else if (obj.length === obj.length) {

在 underscore.js 中多次进行了相同类型的比较,所以我很确定这不是错字。

如果有人可以向我指出一篇文章,或者向我抛出一些正确的术语,我将不胜感激:)。谢谢!

4

1 回答 1

5

它正在检查length属性是否为数字。当应用一元+时,它将返回对象的数字表示或NaN,这将是比较通过或失败的基础。对于第一种情况,如果obj没有length属性+undefined,它将返回NaN。如果obj.length是数字,则条件将通过。

于 2013-01-01T05:39:18.583 回答