背景:我基本上是一个自学成才的程序员。过去六年我一直从事专业的 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 可能需要一些时间来搜索其属性,但一般来说,影响很小。