JavaScript的三倍大于
我在另一个StackOverflow文章中看到了这个语法,并对它的function感到好奇:
var len = this.length >>> 0;
>>>
意味着什么?
这是一个无符号的右移运算符 。 有趣的是,它是在JavaScript中未签名的唯一按位运算符 。
>>>运算符将expression式1的位右移expression式2中指定的位数。 零点从左侧填充。 右移的数字被丢弃。
忽略它的意图,这是最有可能的地方你会看到它的使用:
>>> 0
是唯一的,它是将任何types转换为正整数的唯一操作符:
"string" >>> 0 == 0 (function() { }) >>> 0 == 0 [1, 2, 3] >>> 0 == 0 Math.PI >>> 0 == 3
在你的例子中, var len = this.length >>> 0
,这是一种获取整数长度的方法来迭代this
,无论this.length
types是什么types。
同样的, ~~x
可以用来把任何variables转换成有符号的整数。
这个操作符是一个合理的右移。 这里的数字是移位0位。 数位上的零位移动不应该有效果。
但在这里它被用来将值转换为一个无符号的32位整数。
>>>
是一个按位运算符, 零填充右移 。
我认为>>> 0
对正数的唯一影响是舍入到最接近的整数,与Math.floor()
相同。 我不明白为什么在你的例子中这是必要的,因为通常一个.length
属性(例如一个Array
)是一个整数。
我也看到稍微短一些的~~
用相同的方式: ~~9.5 == 9; // true
~~9.5 == 9; // true
。