Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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中,什么';“这是什么意思?”;抵消>&燃气轮机>;=0“;分配_Javascript - Fatal编程技术网

在Javascript中,什么';“这是什么意思?”;抵消>&燃气轮机>;=0“;分配

在Javascript中,什么';“这是什么意思?”;抵消>&燃气轮机>;=0“;分配,javascript,Javascript,>>=是Javascript中的无符号右移运算符: 我看到作者正在使用以下代码: 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) th

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

我看到作者正在使用以下代码:

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);
if(偏移量的类型!='number'| |偏移量%1!==0)
抛出类型错误(“非法偏移量:“+offset+”(非整数)”);
偏移量>>=0;
if(偏移量<0 | |偏移量+0>此.buffer.bytellength)

throw RangeError(“非法偏移:0将值移位为零步的唯一目的是强制转换为32位整数并返回

因为前面的语句检查它是一个数字,并且这个数字没有小数部分,所以它在代码中没有任何作用

对于负值,它会将其转换为该值的无符号2的补码,例如从
-1
4294967295
。由于该值超出了缓冲区的大小,它将被下一个语句中的检查捕获


如果保持shift,则不需要在下一条语句中检查偏移量<0,因为这永远不会发生。

可能不是重复的,但它包含答案的一部分:“>>>0是唯一一个将任何类型转换为正整数的运算符:“-但是为什么要转换它,然后检查它是否为负数?我会像你说的那样删除那行。很好的解释,谢谢。