局部变量有多昂贵(var v
)、全局变量(window.v
)和跨全局变量(parent.v
) 在 JavaScript 中,在主要浏览器中?有人对此进行过良好的测试吗?
忽略解释器/解析器的优缺点,重要的是运行时必须查看作用域链的各个部分的程度。
考虑这个简单的例子:
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
请记住,函数与变量共享相同的命名空间(I think)并且在分辨率方面就像变量一样。
使用时无需额外付费foo['bar']
代替foo.bar
,也许除了 Javascript 引擎的优化(尽管如果你正在优化后者,那么如果内容是文字的话,优化前者应该很容易)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)