>>>=
是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; =是什么意思,以及我是否可以完全跳过它。代码似乎只有在偏移量为负的情况下才有效,而且我不太清楚该操作的目的。
答案 0 :(得分:2)
将零值移位的唯一目的是强制转换为32位整数并返回。
由于之前的陈述检查它是一个数字并且该数字没有小数部分,因此该代码没有任何用途。
对于负值,它会将其转换为值的无符号二进制补码,例如从-1
到4294967295
。因为它无论如何都超出了缓冲区的大小,它将被下一个语句中的检查所捕获。
如果你保留班次,那么你不需要在下一个陈述中检查offset < 0
,因为这种情况永远不会发生。