0

我刚看到这段代码

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (elt /*, from*/) {
        var len = this.length >>> 0; // 3rd line
        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;
    };
}

3号线做什么>>>

4

3 回答 3

6

那是一个无符号右移运算符。有趣的是,它是 javascript 中唯一无符号的按位运算符。

让我们对其进行实际应用..假设您想将一个数字除以 4 是的 8/4 = 2 对!

如果您可以使用按位运算来做到这一点怎么办:那会快得多,对吗?

现在在您的控制台中执行此操作..

20 >>> 2

给 5

如何 ??

当我们将 20 转换为二进制时,我们得到 10100

现在向右移动 2 位,你会得到 101 相当于 5

干杯!

于 2013-09-24T14:02:49.733 回答
2

来自关于JavaScript 运算符的 MDN 文档:

零填充右移

一个 >>> 乙

将二进制表示中的 a 向右移动 b 位,丢弃移出的位,并从左侧移入零。

于 2013-09-24T14:02:40.113 回答
1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

它是一个位运算符。

a >>> b
将二进制表示中的 a b (< 32) 位右移,丢弃移出的位,并从左移零。

于 2013-09-24T14:02:26.907 回答