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();
    };
})();

...一个流氓小 IIFE 覆盖 Array#toString。

你从哪里得到这个 jQuery 文件?

于 2012-07-14T14:30:59.793 回答