js中map实现中 var len = O.length >>> 0;

if (!Array.prototype.map) {

  Array.prototype.map = function(callback, thisArg) {

    var T, A, k;

    if (this == null) {

      throw new TypeError(" this is null or not defined");

    }

    var O = Object(this);

    var len = O.length >>> 0;

    // 3.如果callback不是函数,则抛出TypeError异常.

    if (Object.prototype.toString.call(callback) != "[object Function]") {

      throw new TypeError(callback + " is not a function");

    }

    if (thisArg) {

      T = thisArg;

    }

    A = new Array(len);

    k = 0;

    while(k < len) {

      var kValue, mappedValue;

      if (k in O) {

        kValue = O[ k ];

        mappedValue = callback.call(T, kValue, k, O);

        A[ k ] = mappedValue;

      }

      k++;

    }

    return A;

  };      

}

var len = O.length >>> 0; 这里位运算符目的是什么

RISEBY
浏览 866回答 1
1回答

慕沐林林

個人理解:因爲雖然這個 map 方法是在Array 的 prototype上的,但實際上調用的時候,this 不一定是 Array類型,length不能得到保證,加上位運算後,可以將不確定的値轉換成Number。1 >>> 0 // 1undefined >>> 0 // 0null >>> 0 // 0'string' >>> 0 // 0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript