在JavaScript find()polyfill中使用bitshift运算符

时间:2016-12-02 08:57:48

标签: javascript arrays bit-shift

任何人都可以解释为什么the Array.find() polyfill shown on the MDN website中需要>>> bitshift运算符:

....
var list = Object(this);
var length = list.length >>> 0;
....

我理解它有时被用作将浮点值截断为整数的丑陋方式,但这似乎并非如此,因为length的{​​{1}}值会无论如何都是一个整数。

1 个答案:

答案 0 :(得分:1)

您可以applyArray.prototype.find()方法添加到具有整数属性> = 0且具有length属性的任何对象。然后,如果异构数组的length属性是计算属性而不是完整整数,则将length属性首先截断为整数可能是安全的。由于Math.trunc()是ES6功能,因此它适合Polyfill的性质,以便将>>>运算符与0参数一起使用。

var obj = {7:"g", 1:"b", 2:"c", 0: "a", length: 4.7},
    val = [].find.call(obj, v => v === "c");
console.log(val);