我在Underscore.js的_.each实现中遇到了这行代码,我很好奇这里发生了什么。 obj前面的'+'做什么?
if (obj.length === +obj.length) { ... }
答案 0 :(得分:1)
if
测试obj.length
是数字而不是NaN
。右侧始终是一个数字(如果NaN
不能被解释为数字,则为obj.length
。如果===
也是数字,则只有obj.length
左侧。
请注意,如果isNaN
是一个看起来像数字的字符串,则使用obj.length
将不起作用;也就是说,isNan("3")
会返回false
。另请注意,NaN === NaN
为false
- NaN
永远不会===
。