JavaScript三倍大于

Jey*_*ran 83 javascript

我在另一个StackOverflow帖子上看到了这种语法,并对它的作用感到好奇:

var len = this.length >>> 0;

什么>>>意味着什么?

Eri*_*ric 103

忽略它的意图,这很可能是你会看到它使用的地方:


>>> 0 是唯一的,因为它是唯一将任何类型转换为正整数的运算符:

"string"         >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3]        >>> 0 == 0
Math.PI          >>> 0 == 3
Run Code Online (Sandbox Code Playgroud)

在您的示例中var len = this.length >>> 0,这是一种获取整数长度以用于迭代的方式this,无论何种类型this.length.


同样,~~x可用于将任何变量转换为有符号整数.


Joe*_*Joe 47

那是一个无符号的右移操作员.有趣的是,它是唯一位运算符无符号在JavaScript中.

>>>运算符将expression1的位向右移动expression2中指定的位数.从左边填充零.从右侧偏移的数字被丢弃.


Mar*_*ers 8

该运营商是合乎逻辑的右移.这里数字移位0位.数学上零位的移位应该没有效果.

但是在这里它用于将值转换为无符号的32位整数.