访问大对象的对象属性有多昂贵?

问题描述 投票:0回答:1

背景:我基本上是一个自学成才的程序员。过去六年我一直从事专业的 JS 工作,但由于我对计算机科学基础知识缺乏熟悉,有些事情我不太清楚。

考虑对象:

const test = {a: 1, b: 2, c: 3}  

您可以通过两种方式找到财产的价值

b
。路径1:

console.log(test.b)  

或者路径 2:

for( const prop of Object.keys(test) ){
    if( prop === 'b' ) return console.log(test[prop])
}  

我的问题:在幕后,路径 1 与路径 2 本质上相同吗?计算机是否还必须遍历

test
的每个属性才能找到
b
?或者它是否以某种方式“神奇地”知道当它得到
test[b]
时到底要在内存中查找哪里,这样它就不必扫描整个对象?

javascript javascript-objects
1个回答
0
投票

我的朋友,肯定在第二个例子中,时间间隔,无论多么小,都已经被创建了 因为您使用了循环,并且在任何情况下,这些键中的每一个都将被循环,并且任何符合您的条件的键都将被选择,因此创建了时间间隔,无论多么小,第一个示例的目标很明确,它直接转到相同的答案。

根据我的观点和经验

在 JavaScript 中访问对象的属性通常不会对性能产生重大影响,除非涉及计算量大的任务,例如处理非常大的对象或大规模嵌套循环。如果您有一个非常大的对象,JavaScript 可能需要一些时间来搜索其属性,但一般来说,影响很小。

© www.soinside.com 2019 - 2024. All rights reserved.