什么可能导致Javascript中的这种随机比较行为?

时间:2012-07-14 14:21:53

标签: javascript comparison

我在我的网站上写了这段代码

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 

每次运行时输出都会改变。为什么会发生这种奇怪的行为?

您可以在this jsFiddle demo上自行试用。

2 个答案:

答案 0 :(得分:14)

在jsFiddle中,Array.prototype.toString被覆盖了以下内容......

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

尝试这样......

[].toString(); // 0.6317324512006824

答案 1 :(得分:5)

您已包含的外部jQuery文件在第4022行上具有以下代码:

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

......一个流氓小的IIFE,它覆盖了Array#toString。

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