任何人都可以解释为什么the Array.find() polyfill shown on the MDN website中需要>>>
bitshift运算符:
....
var list = Object(this);
var length = list.length >>> 0;
....
我理解它有时被用作将浮点值截断为整数的丑陋方式,但这似乎并非如此,因为length
的{{1}}值会无论如何都是一个整数。
答案 0 :(得分:1)
您可以apply
将Array.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);