我认为如果您选择其中任何一个,这几乎不会对性能产生影响,但是我想知道使用两者中的哪一种更好。
鉴于我有:
var a = { b: {c: { d: ... }}};
var ref = a.b.c.d;
我应该直接使用a.b.c.d还是创建并使用引用(这里称为“引用”)?
此外,如果有一个getter函数可以返回具有多个复杂程度的对象:
var a = { b: {c: { d: ... }}};
function getObject() {
return a;
}
var ref = getObject();
getObject()。b.c.d和ref之间有区别吗?
我知道这并不重要,但是我的OCD不允许我休息。 :D
答案 0 :(得分:1)
像这样的属性访问会带来很小的开销。
使用d
变量直接访问ref
会更快。
现在的重点是:什么时候属性访问开销大于声明新变量的开销?
最后,选择最适合自己的东西。两者都不会导致明显的性能差异。
答案 1 :(得分:1)
JavaScript我应该存储对嵌套对象的引用还是直接使用它?
这几乎完全取决于具体情况。通常,编写任何最清晰的代码,而不用担心效率,直到/除非您面前有需要解决的性能问题。
访问对象的属性花费的时间不为零,但是在现代浏览器中,它非常有效。因此,使用ref
而不是a.b.c.d
会更快,但是除非您要在紧密的循环中连续执行数十万次,否则在编写的任何代码中都不太重要。担心的话,如果您这样做的话。
要考虑的另一件事是其他代码是否可以修改a
或b
或c
,以使ref === a.b.c.d
不再为真。如果您希望代码看到这些更改,请不要使用ref
。如果您希望它免受此类更改的影响,请使用ref
,即使ref
可能已过时。
有一个很大的不同:如果您改用getObject
,则稍后不会调用ref
。如果您知道要继续使用最初返回给您的对象getObject
,并且/或者想要避免重复调用的开销,请使用ref
。但是推测getObject
存在是有原因的,因此在某些情况下,再次使用getObject
可能更有意义。实际情况取决于具体情况。