在JavaScript find()polyfill中使用bitshift运算符
有人能解释一下为什么在以下情况下需要使用在JavaScript find()polyfill中使用bitshift运算符,javascript,arrays,bit-shift,Javascript,Arrays,Bit Shift,有人能解释一下为什么在以下情况下需要使用>位移位运算符: 我知道它有时被用作将浮点值截断为整数的丑陋方式,但这里的情况似乎不是这样,因为list的length值无论如何都是整数。您可以应用数组.prototype.find()方法,该方法适用于任何属性为整数>=0且具有长度属性的对象。如果我们的奇异数组的length属性是一个计算属性而不是一个完美整数,那么可以安全地首先将它的length属性截断为一个整数。由于Math.trunc()是一种ES6功能,因此使用>运算符和0参数符合多边形填充的性
>
位移位运算符:
我知道它有时被用作将浮点值截断为整数的丑陋方式,但这里的情况似乎不是这样,因为
list
的length
值无论如何都是整数。您可以应用数组.prototype.find()
方法,该方法适用于任何属性为整数>=0且具有长度
属性的对象。如果我们的奇异数组的length
属性是一个计算属性而不是一个完美整数,那么可以安全地首先将它的length
属性截断为一个整数。由于Math.trunc()
是一种ES6功能,因此使用>
运算符和0
参数符合多边形填充的性质
var obj={7:g',1:b',2:c',0:a',长度:4.7},
val=[].find.call(obj,v=>v==“c”);
控制台日志(val)代码>
我知道它有时被用作将浮点值截断为整数的丑陋方式
不完全是<代码>值>>>0
是使用抽象操作的唯一公开方式
具有其长度必须为Uint32值的不变量:
每个数组对象都有一个length属性,其值始终为
小于232的非负整数
这就是为什么规范在数组方法定义中到处使用ToUint32。Polyfills使用>>0
而不是ToUint32,因为ToUint32不暴露于JS代码
您需要使用ToUint32,因为您不知道这个
将在数组方法中是什么,它可以是非数组对象,甚至是原语。否则,对象(这个)
也就没有必要了
....
var list = Object(this);
var length = list.length >>> 0;
....