Javascript 'var variable' 内部循环与外部循环。任何性能差异
Javascript 'var variable' inside loop vs outside. Any difference in performence
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];
这两个片段有不同的表现。如果是,请说明原因。
您的代码在这两种情况下的工作方式不同。
第一个 line
是一个 全局变量 并且可以在 外部访问循环,第二个不是这样。
所以我认为这里的性能比较没有任何意义!
即便如此,一次又一次地声明一个变量是不必要的,尽管我不认为这是一个复杂的操作。但是是的,重复声明它会降低性能。
我有一个关于此的基准测试 运行,发现性能几乎没有差异。
如果您想重新创建它:
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));
这是有道理的,因为几乎没有区别,两种情况都会创建一个将被存储的本地对象,并将多次重新分配它。
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];
这两个片段有不同的表现。如果是,请说明原因。
您的代码在这两种情况下的工作方式不同。
第一个 line
是一个 全局变量 并且可以在 外部访问循环,第二个不是这样。
所以我认为这里的性能比较没有任何意义!
即便如此,一次又一次地声明一个变量是不必要的,尽管我不认为这是一个复杂的操作。但是是的,重复声明它会降低性能。
我有一个关于此的基准测试 运行,发现性能几乎没有差异。
如果您想重新创建它:
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));
这是有道理的,因为几乎没有区别,两种情况都会创建一个将被存储的本地对象,并将多次重新分配它。