JavaScript三倍于
我在另一个网站上看到了这种语法,并对它的作用感到好奇:JavaScript三倍于,javascript,Javascript,我在另一个网站上看到了这种语法,并对它的作用感到好奇: var len=this.length>>0 >意味着什么?这是一个问题。有趣的是,它是JavaScript中唯一一个未签名的 >>>运算符将expression1的位右移 表达式2中指定的位。零从左边填充。 右移的数字将被丢弃 >是位运算符 我认为>>0对正数的唯一影响是向下舍入到最接近的整数,就像Math.floor()一样。我不明白为什么在您的示例中需要这样做,因为通常.length属性(例如数组的)已经是整数了 我也看到过稍微短一点
var len=this.length>>0代码>
>
意味着什么?这是一个问题。有趣的是,它是JavaScript中唯一一个未签名的
>>>运算符将expression1的位右移
表达式2中指定的位。零从左边填充。
右移的数字将被丢弃
>
是位运算符
我认为>>0
对正数的唯一影响是向下舍入到最接近的整数,就像Math.floor()
一样。我不明白为什么在您的示例中需要这样做,因为通常.length
属性(例如数组的)已经是整数了
我也看到过稍微短一点的~
以同样的方式使用:~~9.5==9;//true
该运算符是逻辑右移。在这里,数字移位为0位。从数学上讲,零位移位应该没有影响
但在这里,它用于将值转换为无符号32位整数。忽略它的预期含义,您很可能会在这里看到它的使用:
>>0
的独特之处在于它是唯一将任何类型转换为正整数的运算符:
"string" >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3] >>> 0 == 0
Math.PI >>> 0 == 3
在您的示例中,var len=this.length>>0
,这是一种获取整数长度的方法,用于迭代this
,无论该.length是什么类型
类似地,~~x
可以用于将任何变量转换为有符号整数。这是右移运算符,但为什么要右移零?这是一种廉价的方法吗?>>
总是将符号位设置为零,即使你移动了零位。检查这个答案,了解为什么他们在这种情况下使用>
操作符:JavaScript三角括号我怀疑它是否与Math.abs()相同
当用于负数时。如果对负数执行>0
操作,它会将负数转换为2的补语,然后右移。因此-14>>0==1073741820
。()@AlKepp-是的,我看到了错误并修复了它-应该先测试一下,但这显然是一个简单的问题:)。你能解释一下如何使用>
>进行迭代吗?@K48我想他不是指迭代,我想他是说这迫使长度变成一个数字。(否则,我同样感到困惑。)但这里有一个很好的答案可以解释更多: