空块是否运行?

时间:2013-07-10 15:09:43

标签: javascript micro-optimization

这是相关的,b.c。我想测试循环结构。我通常做的是简单的声明,如

i++

在循环中。我这样做b.c.我想知道智能翻译是否会运行空块。例如。

for(var i = 0; i < 10; i++) {
}
由于循环中没有任何内容,

可能根本不会循环。

所以我通常会这样做:

for(var i = 0; i < 10; i++) {
    i++;
}

但这确实测试了i++语句以及我不想要的循环结构。

2 个答案:

答案 0 :(得分:2)

这里看看这个。请注意尝试显示提醒时的延迟:http://jsfiddle.net/xs724/

for(var ii = 0; ii < 1000000000; ii++){}
alert("DONE");

我用chrome测试了这个。它很可能因浏览器而异。

JsPerf链接:http://jsperf.com/js-optimizationlooping

答案 1 :(得分:1)

答案是:你永远不会知道。现代JavaScript引擎中正在进行大量优化。一个例子是死代码消除,它跳过不影响最终结果的代码。

在IE9中有关此功能的一个非常有趣的争议: http://digitizor.com/2010/11/17/internet-explorer-9-caught-cheating-in-sunspider-benchmark/

但是你为什么要反复运行一个空块呢?

如果您希望JavaScript解释器只是等待尝试这个答案:
What is the JavaScript version of sleep()?
Sleep in Javascript - delay between actions