为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

RISEBY 2018-11-14 14:15:54
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; 这里位运算符目的是什么
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

個人理解:

因爲雖然這個 map 方法是在Array 的 prototype上的,但實際上調用的時候,this 不一定是 Array類型,length不能得到保證,加上位運算後,可以將不確定的値轉換成Number。

1 >>> 0 // 1

undefined >>> 0 // 0

null >>> 0 // 0

'string' >>> 0 // 0


查看完整回答
反对 回复 2018-12-14
  • 1 回答
  • 0 关注
  • 862 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信