哪个更好,为什么? for 循环 javascript
Which one is better and why ? for loop javascript
A.
var a = array();
for(var i = 0; i< 100;i++) {
var obj = new Obj(parameters);
a.push(obj);
}
B.
var a = array();
var obj;
for(var i = 0; i< 100;i++) {
obj = new Obj(parameters);
a.push(obj);
}
哪一个在处理和内存方面更快,有什么区别吗?
在执行方面没有区别。在解析代码时,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
定义。
A.
var a = array();
for(var i = 0; i< 100;i++) {
var obj = new Obj(parameters);
a.push(obj);
}
B.
var a = array();
var obj;
for(var i = 0; i< 100;i++) {
obj = new Obj(parameters);
a.push(obj);
}
哪一个在处理和内存方面更快,有什么区别吗?
在执行方面没有区别。在解析代码时,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
定义。