Tom*_*Tom 4 javascript performance
在主流浏览器中,JavaScript中的局部变量(var v),全局变量(window.v)和跨全局变量(parent.v)有多贵?有没有人对这个进行过任何好的测试?
忽略解释器/解析器的优点和缺点,重要的是运行时必须查看作用域链的一部分.
考虑这个简单的例子:
foo = 42; // implicitly window.foo; cost: 2
var bar = 3; // cost: 1
function woot(a) {
a; // cost: 1
bar; // cost: 2
foo; // cost: 3
var other = 9;// cost: 1
other; // cost: 1
a.something; // cost: 2
foo.win.fail.arg.func(a.something).thing = 0; // cost: 8 + 2
}
woot(bar); // cost: 2 + 1
Run Code Online (Sandbox Code Playgroud)
请记住,函数与变量(我认为)共享相同的名称空间,并且就解决方案而言就像变量一样.
除了可能通过Javscript引擎进行优化之外,使用foo['bar']而不是额外的成本foo.bar(尽管如果你优化后者,如果内容是文字的话,应该很容易优化前者).