Javascript 在对象前面加上'+';接线员怎么办?

Javascript 在对象前面加上'+';接线员怎么办?,javascript,underscore.js,Javascript,Underscore.js,我在下划线.js的每个实现中都遇到了这行代码,我很好奇这里发生了什么。obj前面的“+”是做什么的 if(obj.length===+obj.length){…}if测试obj.length是数字而不是NaN。右侧始终是一个数字(或NaN如果obj.length不能解释为数字)。如果obj.length也是一个数字,则它将仅位于左侧 请注意,如果obj.length是一个看起来像数字的字符串,那么使用isNaN将不起作用;也就是说,isNan(“3”)返回false。还要注意的是,NaN====

我在下划线.js的每个实现中都遇到了这行代码,我很好奇这里发生了什么。obj前面的“+”是做什么的


if(obj.length===+obj.length){…}
if
测试
obj.length
是数字而不是
NaN
。右侧始终是一个数字(或
NaN
如果
obj.length
不能解释为数字)。如果
obj.length
也是一个数字,则它将仅位于左侧


请注意,如果
obj.length
是一个看起来像数字的字符串,那么使用
isNaN
将不起作用;也就是说,
isNan(“3”)
返回
false
。还要注意的是,
NaN====NaN
false
-
NaN
从来都不是
==
任何东西。

那么,比较同一对象的.length属性有什么意义,一次作为“强制数字”,一次不作为?这有什么作用?@alnafie-我必须看一下代码才能知道,但我最初的猜测是,这是一个关卡代码,它要么要求
obj.length
是一个数字,要么是一些昂贵的代码来计算
obj.length
,如果已经正确设置,那么应该跳过它。