在Javascript中,"偏移>>> = 0"的重点是什么?分配?

时间:2015-04-20 11:16:22

标签: javascript

>>>=是Javascript中的无符号右移运算符: Reference

In this code 我看到作者正在使用这段代码:

if (typeof offset !== 'number' || offset % 1 !== 0)
  throw TypeError("Illegal offset: "+offset+" (not an integer)");
offset >>>= 0;
if (offset < 0 || offset + 0 > this.buffer.byteLength)
  throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength);

我想知道使用&gt;&gt;&gt; =是什么意思,以及我是否可以完全跳过它。代码似乎只有在偏移量为负的情况下才有效,而且我不太清楚该操作的目的。

1 个答案:

答案 0 :(得分:2)

将零值移位的唯一目的是强制转换为32位整数并返回。

由于之前的陈述检查它是一个数字并且该数字没有小数部分,因此该代码没有任何用途。

对于负值,它会将其转换为值的无符号二进制补码,例如从-14294967295。因为它无论如何都超出了缓冲区的大小,它将被下一个语句中的检查所捕获。

如果你保留班次,那么你不需要在下一个陈述中检查offset < 0,因为这种情况永远不会发生。