快速了解js中的静态局部变量

时间:2012-02-13 08:14:39

标签: javascript performance

我读过你可以像这样在js中模拟静态局部变量:

function count() {
count.i++;
}
count.i = 0;

将'i'存储为'count'的属性比使用全局更快吗?例如

var i=0;
function count ()
{i++;
}

只是性能比较问题。

感谢。

2 个答案:

答案 0 :(得分:1)

似乎外部存储的值更快。见this test。如果您在函数内部或外部分配count.i,则很重要。将其分配到函数外部会显示出很小的差异。我不担心。

你也可以认为这可以模拟静态的东西(添加到jsperf-test,它大致和分配全局变量或外部分配的count.i一样快)

function counter(){
 var i = 0;
 return {
     count:    function(){i += 1;},
     toString: function(){return i;},
     valueOf:  function(){return i;}
 };
}

var foo = counter(), bar = counter();
foo.count();
bar.count();
bar.count();
console.log(bar); //=> 2
console.log(foo); //=> 1

答案 1 :(得分:1)

理论上,全局变量应该比属性略快,因为属性查找需要另一个步骤。

但是,不同浏览器之间的性能差异很大,访问变量和属性是如此快速的操作,以至于任何性能差异都很少。您在脚本中执行的大多数其他操作都需要更长的时间。

相关问题