编辑:此问题已过时,因为 Polyfill 示例已更新。我将问题留在这里仅供参考。阅读正确答案以获取有关按位移位运算符的有用信息。
问题:
在 Mozilla Array.prototype.indexOf页面的 Polyfill 示例中的第 7 行,他们对此进行了评论:
var length = this.length >>> 0; // Hack to convert object.length to a UInt32
但是 Mozilla 上的按位移位规范明确指出,运算符返回与左操作数相同类型的值:
移位运算符将其操作数转换为 32 位整数,并返回与左操作数相同类型的结果。
那么 length 不应该接收标准的 64 位浮点值吗?或者有人可以向我指出黑客从哪里开始?