Mozilla的Array.prototype.indexOf中的代码问题[重复]
Posted
技术标签:
【中文标题】Mozilla的Array.prototype.indexOf中的代码问题[重复]【英文标题】:Question on Code in Mozilla's Array.prototype.indexOf [duplicate] 【发布时间】:2010-12-01 06:46:04 【问题描述】:这是 Mozilla 的 Array.prototype.indexOf 中的 Mozilla 代码
if (!Array.prototype.indexOf)
Array.prototype.indexOf = function(elt)
var len = this.length >>> 0; // What does ">>>" do?
var from = Number(arguments[1]) || 0;
from = (from < 0) ? Math.ceil(from): Math.floor(from);
if (from < 0)from += len;
for (; from < len; from++)
if (from in this && this[from] === elt)return from;
return -1;
;
我不懂一些语法。 上面代码中的“>>>”是做什么的?
【问题讨论】:
精确复制:***.com/questions/1385491/… 【参考方案1】:这是一个无符号右移——它们基本上是作为一种非常快速的方式来转换为有效的数组索引。
【讨论】:
【参考方案2】:我认为这是一个无符号右移运算符
【讨论】:
是的:见:developer.mozilla.org/En/Core_javascript_1.5_Reference/…【参考方案3】:这是一个无符号右移,正如这里指出的:http://www.c-point.com/javascript_tutorial/jsoprurshift.htm,但它应该移动第二个数字中的位数(在 >>> 的右侧)。
【讨论】:
【参考方案4】:另见Why use /*, */ around arguments and why use >>> when extracting the length of an array?:
“>>> 是一个无符号右移。它在这里被用来将一个潜在的有符号数长度转换为一个无符号数。”
【讨论】:
以上是关于Mozilla的Array.prototype.indexOf中的代码问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章
永别了 Firefox OS!Mozilla 宣布解散 Firefox OS 幕后团队