Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript三倍于_Javascript - Fatal编程技术网

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我想他不是指迭代,我想他是说这迫使长度变成一个数字。(否则,我同样感到困惑。)但这里有一个很好的答案可以解释更多: