我读过你可以像这样在js中模拟静态局部变量:
function count() {
count.i++;
}
count.i = 0;
将'i'存储为'count'的属性比使用全局更快吗?例如
var i=0;
function count ()
{i++;
}
只是性能比较问题。
感谢。
答案 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)
理论上,全局变量应该比属性略快,因为属性查找需要另一个步骤。
但是,不同浏览器之间的性能差异很大,访问变量和属性是如此快速的操作,以至于任何性能差异都很少。您在脚本中执行的大多数其他操作都需要更长的时间。