哪一个更好,为什么? for循环javascript

时间:2015-02-18 02:12:40

标签: javascript performance logic

一个。

    var a = array();
    for(var i = 0; i< 100;i++) {
        var obj = new Obj(parameters);
        a.push(obj);
    }

    var a = array();
    var obj;
    for(var i = 0; i< 100;i++) {
        obj = new Obj(parameters);
        a.push(obj);
    }

哪一个在处理和记忆方面更快,是否有任何区别?

1 个答案:

答案 0 :(得分:2)

执行方面没有区别。在解析代码时,var obj在两种情况下都被提升到函数作用域的顶部,因此当解释器运行它时,它会产生相同的实际代码。有关吊装的更多信息,请参阅this article

执行速度应该没有区别(一旦解析),因为两者都编译为相同的实际代码。如果你想看看解析速度是否存在有意义的差异(这似乎不太可能),你必须构建一个测试用例,然后在几个不同的浏览器中测试性能。

如果您想优化性能,那么您可以在您向我们展示的代码中完全消除中间变量:

 var a = [];
 for (var i = 0; i< 100;i++) {
     a.push(new Obj(parameters));
 }

对于从可读性角度编写代码的更好方法,有不同的意见。许多人建议所有变量都应在其定义范围的顶部声明。其他人喜欢将它们定义为最接近第一次使用。由于两者都导致相同的实际执行,这更像是一种首选的风格而不是其他任何东西。


在ES6中引入let关键字后,Javascript中会有块范围,因此使用let obj = new Obj(...)会有第三个选项,导致与var不同的执行定义