Javascript 比较值 === +值

TuK*_*TuK 2 javascript underscore.js

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

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

//some stuff
} else if (obj.length === +obj.length) {
//do stuff
Run Code Online (Sandbox Code Playgroud)

我不是 100% 确定这里发生了什么,谁能解释 obj.length 值之前的“+”的目的?如果只是读取,比较是否相同:

} else if (obj.length === obj.length) {
Run Code Online (Sandbox Code Playgroud)

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

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

0x4*_*2D2 5

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