我们说我有以下代码:
var k;
for(k in obj){
if(obj.p1.p1.p1){
obj.p1.p1.p2 = obj.p1.p1.p3;
}
// ...
// more stuff with obj.p1.p1
// ...
}
如果我将obj.p1.p1
存储在这样的变量中会更好吗?
var k, p;
for(k in obj){
p = obj.p1.p1;
if(p.p1){
p.p2 = p.p3;
}
// ...
}
这样我可以减少对财产的访问,但是我使用了更多内存(我还有一个变量)。
哪种方式更好?它有所作为吗?
答案 0 :(得分:1)
理论上,从严格的性能角度来看, 1 将值保存到变量并使用变量会更快。
在实践中,假设JavaScript引擎知道其他线程无法修改该值(例如,在浏览器和NodeJS上都是如此),如果它变得对性能至关重要,那么一个体面的现代JavaScript引擎将尽可能为您完成。分析程度可能因引擎而异,但现在它们几乎都是非常快。
从风格或维护的角度来看它是“更好”是一个意见问题,因此对于SO来说是偏离主题的。
1 然而:即使速度更快,实际上也不太重要,因此从性能角度考虑它可能是过早的微优化。写下你认为最清晰的代码,并担心如果/当你遇到特定的性能问题时哪个更快。