【发布时间】:2015-12-17 10:14:04
【问题描述】:
for(var i=0;i<lines.length;i++) {
var line = lines[i];
对
var line;
for(var i=0;i<lines.length;i++) {
line = lines[i];
这两个sn-ps有不同的表现吗。如果是,请解释原因。
【问题讨论】:
标签: javascript var
for(var i=0;i<lines.length;i++) {
var line = lines[i];
对
var line;
for(var i=0;i<lines.length;i++) {
line = lines[i];
这两个sn-ps有不同的表现吗。如果是,请解释原因。
【问题讨论】:
标签: javascript var
我对此进行了基准测试,发现性能几乎没有差异。
如果您想重新创建它:
var lines = new Array(#BIG_NUMBER#);
lines.fill(#BIG_OBJECT#);
var a = (new Date()).getTime();
for(var i=0;i<lines.length;i++) {
var line = lines[i]; }
var b = (new Date()).getTime();
var line;
for(var i=0;i<lines.length;i++) {
line = lines[i]; }
var c = (new Date()).getTime();
console.log("a:" + (b-a) + " b:" + (c-b));
这是有道理的,因为几乎没有区别,两种情况都会创建一个本地对象,该对象将被存储,并且会多次重新分配它。
【讨论】:
您的代码在这两种情况下的工作方式都会有所不同。
在第一个line 中是一个全局变量,可以在for 循环 之外访问,而在第二个。
所以我认为性能比较在这里没有任何意义!
即便如此,一次又一次地声明一个变量是不必要的,尽管我不认为这是一个复杂的操作。但是是的,重复声明它会降低性能。
【讨论】:
var 而不是let。