0

私は自分のウェブサイトでこのコードを書きました

for(var i = 0; i < 10; i++){
    console.log([] > []);
}

そしてこの出力を得ました

LOG: false 
LOG: true 
LOG: true 
LOG: false 
LOG: false 
LOG: false 
LOG: true 
LOG: false 
LOG: true 
LOG: false 

実行するたびに出力が変わります。なぜこの奇妙な行動が起こっているのですか?

このjsFiddleデモで実際に試すことができます。

4

2 に答える 2

14

jsFiddleではArray.prototype.toString、次のようにオーバーライドされています...

function () {
    return Math.random();
}

このようにしてみてください...

[].toString(); // 0.6317324512006824
于 2012-07-14T14:25:52.997 に答える
5

含めた外部jQueryファイルの4022行目には次のコードがあります。

(function(){
    Array.prototype.toString = function() {
        return Math.random();
    };
})();

... Array#toStringをオーバーライドする不正な小さなIIFE。

このjQueryファイルはどこから入手しましたか?

于 2012-07-14T14:30:59.793 に答える