【问题标题】:Which is more efficient? (Variables for JavaScript loop)哪个更有效率? (JavaScript 循环的变量)
【发布时间】:2013-10-29 09:19:25
【问题描述】:

为了简单起见,坐在我的办公桌前想知道(在 JavaScript 中)之间是否存在效率差异:

var i = 0;

for(i=0; i<Something.length; i++) foo();

for(i=0; i<Something.length; i++) foo();

还有……

for(var i=0; i<Something.length; i++) foo();

for(var i=0; i<Something.length; i++) foo();

【问题讨论】:

  • 在放弃并在 SO 上发帖之前,您通过性能测试得到了什么结果?
  • 使用 www.jperf.com 检查代码的效率。
  • @RajaPrabhuOfficial 你的意思是 www.jSperf.com 吗?
  • @BuhBuh 是的,我的意思是,对不起,我拼错了。
  • 现在只看 JSperfs。哇!人们在这里快速回复。将评估并接受 abit 的答案。

标签: javascript variables for-loop performance


【解决方案1】:

这个会更快,你会将Something.length缓存在变量中,这样它就不会在循环期间被解释:

for(var i=0, len = Something.length; i<len; i++) foo();

这是test

但是如果没有缓存,从循环中移动 var 定义确实会快一点

【讨论】:

  • 接受了这个,因为 JSperf。有帮助,谢谢。似乎最快的是在 for 循环之外创建变量。谢谢
【解决方案2】:

我尝试了 1000000 次循环,第一次运行 2.7 秒,第二次运行 2.418 秒。

显然,第一个更快。

但由于 JavaScript 没有块作用域,i 在这两种情况下仍然可以在循环外使用,如果您稍后忘记初始化它可能会出错。

【讨论】:

    猜你喜欢
    • 2016-01-12
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    相关资源
    最近更新 更多