0

这是相关的,因为我想测试循环结构。我通常做的是放在一个简单的陈述中,比如

i++

在循环。我这样做是因为我想知道智能解释器是否不会运行空块。例如。

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

可能根本不循环,因为循环中没有任何内容。

所以我通常会做类似的事情:

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

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

4

2 回答 2

2

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

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

我在 chrome 中对此进行了测试。它很可能因浏览器而异。

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

于 2013-07-10T15:12:41.397 回答
1

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

关于 IE9 中的这个特性有一个相当有趣的争议:http: //digitizor.com/2010/11/17/internet-explorer-9-caught-cheating-in-sunspider-benchmark/

但是你为什么要一遍又一遍地运行一个空块呢?

如果您希望 JavaScript 解释器简单地等待,请尝试以下答案:
什么是 sleep() 的 JavaScript 版本?
在 Javascript 中休眠 - 动作之间的延迟

于 2013-07-10T15:21:32.030 回答