不同浏览器的控制台语句的执行顺序

时间:2014-10-17 13:43:20

标签: javascript for-loop console.log

到目前为止,我已经在Firefox(32)和Chrome(38)中测试过以下代码

var startTime = (new Date()).getTime();
console.log(startTime);

var data = [];
var tCat = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
var dataPoints = 2000000;

for ( var i = 0; i < dataPoints; i++ ) {
    var r = Math.random;
    data.push({
        value: Math.pow(1 - Math.cos((r() * Math.PI) / 2), 3),
        cost: +r().toFixed(2),
        category: tCat[Math.floor(r() * tCat.length)]
    });
}

var endTime = (new Date()).getTime();
console.log(endTime);
console.log(endTime - startTime);

您可以在此jsfiddle

查看

在Firefox中,似乎所有三个控制台语句同时触发,循环完成执行后,但在Chrome中,第一个控制台语句在循环开始执行之前显示。代码本身按预期工作,但Firefox中第一个控制台语句的执行令人困惑。谁能解释一下呢?

1 个答案:

答案 0 :(得分:2)

TL; DR:控制台不受任何标准的约束,并且取决于浏览器。

它按预期工作。 尝试添加断点并逐步执行代码中的每一行,您将看到它们按预期执行。更粗略的方法是使用alert()使脚本瘫痪。

但是,行为依赖于供应商。没有保证。