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 を 2 進数に変換すると、10100 になります。

ここで 2 ビットを右にシフトすると、5 に相当する 101 が得られます

乾杯!

于 2013-09-24T14:02:49.733 に答える
2

JavaScript 演算子に関する MDN ドキュメントから:

ゼロフィル右シフト

a >>> b

バイナリ表現の 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 に答える