Javascript 下划线.js中的加号运算符是什么意思?

Javascript 下划线.js中的加号运算符是什么意思?,javascript,underscore.js,Javascript,Underscore.js,当我看到Underline.js(1.4.3版)代码时,我看到了以下几行(79行) if(obj.length===+obj.length){ 对于(变量i=0,l=obj.length;i

当我看到Underline.js(1.4.3版)代码时,我看到了以下几行(79行)

if(obj.length===+obj.length){
对于(变量i=0,l=obj.length;i
我不明白为什么在if语句中使用
+
运算符。(+物体长度)
而且,这句话不是总是正确的吗
我不认为这是打字错误。使用它一定有一定的目的。如果有人知道这种用法的好处,我想在将来使用它。
谢谢。

加号运算符将值转换为数字


基本上,
a===+a
确保a是数字而不是字符串。

加号运算符将值转换为数字


基本上,
a===+a
确保a是数字而不是字符串。

obj.length
可以是任何类型-例如
未定义的
<代码>+obj。长度始终是一个数字


因此,代码基本上检查
length
属性是否存在并且是一个数字。进行此检查的原因是
。.each()
同时接受数组和非数组对象。对于数组而言,
length
属性是迭代其元素所必需的,而对于非数组对象而言,
for..In
循环是可行的方法。

obj.length
可以是任何类型-例如
未定义的
<代码>+obj。长度始终是一个数字


因此,代码基本上检查
length
属性是否存在并且是一个数字。进行此检查的原因是
。.each()
同时接受数组和非数组对象。对于数组而言,
length
属性是迭代其元素所必需的,而对于非数组对象而言,
for..In
循环是一种方法。

它将值转换为数字。我发现这篇文章很有帮助:


干杯!:)

它将值转换为数字。我发现这篇文章很有帮助:


干杯!:)

一元
+
运算符生成其操作数的数值等效值,如果操作数无法转换为数字,则生成
NaN

这是Javascript中存在的许多小“技巧”之一:

  • !!foo
    -将
    foo
    转换为布尔值
  • ~~foo
    -将
    foo
    转换为32位有符号整数

一元
+
运算符生成其操作数的数值等效值,如果操作数无法转换为数字,则生成
NaN

这是Javascript中存在的许多小“技巧”之一:

  • !!foo
    -将
    foo
    转换为布尔值
  • ~~foo
    -将
    foo
    转换为32位有符号整数
可能的副本
   if (obj.length === +obj.length) {
        for (var i = 0, l = obj.length; i < l; i++) {
            if (iterator.call(context, obj[i], i, obj) === breaker) return;
        }
    }