Gre*_*een 25 javascript arrays iterator operators
在这样的代码行中找到了这个运算符:
var t = Object(this),
        len = t.length >>> 0;
这个算子是什么意思?
完整代码如下.它是JS some方法的代码:
if (!Array.prototype.some) {
  Array.prototype.some = function(fun /*, thisp */) {
    "use strict";
    if (this == null) throw new TypeError();
    var t = Object(this),
        len = t.length >>> 0;
    if (typeof fun != "function") throw new TypeError();
    var thisp = arguments[1];
    for (var i = 0; i < len; i++) {
      if (i in t && fun.call(thisp, t[i], i, t))
        return true;
    }
    return false;
  };
}
Aln*_*tak 38
>>>是没有符号扩展的右移
如果>>对负数使用运算符,结果也将为负,因为原始符号位被复制到所有新位中.随着>>>零将不是被复制.
在这种特殊情况下,它只是用作将length字段限制为无符号31位整数的方法,换句话说是将Javascript的本机IEEE754"双"数转换为整数.
这是一个零填充右移。当您对数字进行位移位时,您可以决定用零或符号位填充最左边的位。
在二进制补码数字表示中,负数以 1 作为前导位,而正数以 0 为前导位。因此,如果您不“符号扩展”(用零填充)并移位负数,则会导致正数。