用“+”运算符为对象添加前缀有啥作用? [复制]

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 === NaNfalseNaN 绝不是 ===

【讨论】:

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

以上是关于用“+”运算符为对象添加前缀有啥作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

运算符 delete[] 有啥作用? [复制]

^ (XOR) 运算符有啥作用? [复制]

C语言中,sizeof运算符有啥作用?

在 Javascript 中使用多个 = 运算符有啥作用? [复制]

等号后面的波浪号有啥作用? [复制]

在C语言中赋值运算符有啥作用?