用“+”运算符为对象添加前缀有啥作用? [复制]
Posted
技术标签:
【中文标题】用“+”运算符为对象添加前缀有啥作用? [复制]【英文标题】:What does prefixing an object with '+' operator do? [duplicate]用“+”运算符为对象添加前缀有什么作用? [复制] 【发布时间】:2013-02-19 06:27:33 【问题描述】:我在 Underscore.js 的 _.each 实现中遇到了这行代码,我很好奇这里发生了什么。 obj前面的'+'是做什么用的?
if (obj.length === +obj.length) ...
【问题讨论】:
【参考方案1】:if
测试 obj.length
是数字而不是 NaN
。右侧始终是一个数字(如果 obj.length
不能解释为数字,则为 NaN
)。如果obj.length
也是一个数字,它只会在左侧出现===
。
请注意,如果obj.length
是一个看起来像数字的字符串,则使用isNaN
将不起作用;也就是说,isNan("3")
返回false
。另请注意,NaN === NaN
是 false
—NaN
绝不是 ===
。
【讨论】:
那么比较同一个对象的 .length 属性有什么意义,一次是“强制数字”,一次不是?这有什么作用? @alnafie - 我必须查看代码才能知道,但我最初的猜测是,它是围绕代码的门,要么要求obj.length
是一个数字,要么是一些昂贵的代码计算obj.length
,如果它已经正确设置,则应该跳过它。以上是关于用“+”运算符为对象添加前缀有啥作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章