【发布时间】:2011-05-08 06:14:02
【问题描述】:
可能重复:
What good does zero-fill bit-shifting by 0 do? (a >>> 0)
我在看array.indexOf(),我知道IE7 本身并不支持它。我正在阅读 MDC 并在不支持它的浏览器中看到 their example of how to prototype it。我正在通读它,试图了解一切是如何运作的,但我不确定我是否 100% 理解它。造成混淆的主要原因是位运算符,特别是>>>。我不确定这个运算符有什么用。以下是他们使用它的方式。谁能准确解释它的用途以及为什么不能只使用if (t.length === 0)?
var t = Object(this);
var len = t.length >>> 0;
if (len === 0)
return -1;
【问题讨论】:
-
我刚才也读到了,我还不是100%。他的解释似乎是说它确保它是一个非负数......但就像其中一个 cmets 一样,我不知道 array.length 可以返回一个负数。
-
阅读我在my answer 中对@Marcel 的评论,
Array.prototype的方法有意通用,这意味着它们可以用于类数组对象。此外,这些 Array 方法的 Mozilla 实现试图尽可能地模仿 ECMA-262 Specification 的行为,而>>>运算符是模仿ToUint32internal operation 的最短方法,所有这些方法都在内部使用。 .
标签: javascript