相关疑难解决方法(0)

什么是JavaScript >>>运算符以及如何使用它?

我正在查看Mozilla的代码,它为Array添加了一个过滤方法,它有一行代码让我很困惑.

var len = this.length >>> 0;
Run Code Online (Sandbox Code Playgroud)

我以前从未见过用于JavaScript的>>>.
它是什么,它做了什么?

javascript operators bit-shift

141
推荐指数
6
解决办法
3万
查看次数

x >>> 0做什么?

可能重复:
零填充位移0有什么用?(a >>> 0)

我一直在尝试我的一个项目中的一些函数式编程概念,我正在阅读Array.prototype.map,这是ES5中的新功能,看起来像这样:

Array.prototype.map = function(fun) {
    "use strict";
    if (this === void 0 || this === null) {
        throw new TypeError();
    }
    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun !== "function") {
        throw new TypeError();
    }
    var res = new Array(len);
    var thisp = arguments[1];
    for (var i = 0; i < len; i++) {
        if (i in t) {
            res[i] = fun.call(thisp, t[i], i, t);
        }
    }
    return …
Run Code Online (Sandbox Code Playgroud)

javascript bitwise-operators

15
推荐指数
1
解决办法
1700
查看次数

为什么在提取数组的长度时使用/*,*/around参数以及为什么要使用>>>?

我在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;)的零填充右移.

javascript

6
推荐指数
1
解决办法
577
查看次数