内部循环与外部的Javascript“var变量”。性能有任何差异

时间:2015-12-17 10:14:05

标签: javascript var

equals

VS

for(var i=0;i<lines.length;i++) {
  var line = lines[i];

这两个片段有不同的表现。如果是,请解释原因。

2 个答案:

答案 0 :(得分:1)

我已经对此进行了基准测试,并发现性能几乎没有差异。

如果您想重新创建它:

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));

这是有道理的,因为几乎没有区别,两种情况都会创建一个将被存储的本地对象,并将多次重新分配。

答案 1 :(得分:0)

在这两种情况下,您的代码都会有所不同。

在第一个line 全局变量 ,可以在 for循环之外访问,这不是第二个案例。

所以我认为性能比较在这里没有任何意义!

即便如此,虽然我不认为这是一个复杂的操作,但一次又一次地声明一个变量是不必要的。但是,重复声明它会使性能恶化。