我正在查看Mozilla的代码,它为Array添加了一个过滤方法,它有一行代码让我很困惑.
var len = this.length >>> 0;
Run Code Online (Sandbox Code Playgroud)
我以前从未见过用于JavaScript的>>>.
它是什么,它做了什么?
我刚刚在Mozilla Javascript文档中看到了这篇文章:
var len = this.length >>> 0;
Run Code Online (Sandbox Code Playgroud)
我不太明白为什么要这样做.有什么好处呢填零,右移this.length的0呢?据我所知,它什么都没做.它是否安全地为其建立默认值len,即使this.length它不是整数?这可能是这样吗?如果是这样,>> 0和之间的区别是>>> 0什么?
我在developer.mozilla.org网站的indexOf页面上查看了javascript参考手册,并注意到indexOf的实现代码中的一些内容,希望有人能向我解释.
为了节省每个人到mozilla网站的往返,这里是整个功能:
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;
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;
};
}
Run Code Online (Sandbox Code Playgroud)
我不明白的是/*, from*/函数声明中的,以及>>>提取数组长度(var len = this.length >>> 0;)的零填充右移.
这是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;
};
}
Run Code Online (Sandbox Code Playgroud)
我不明白一些语法.
">>>"在上面的代码中做了什么?