Javascript 为什么第四种嵌套值方式的访问速度比第五种慢?
我正在构建一个示例来说明访问嵌套对象成员所需的时间,我发现了这种奇怪的现象。出于某种原因,第四个嵌套对象成员的测试运行速度明显慢于第五个。我在Chrome和Firefox中尝试过这个,得到了相同的结果Javascript 为什么第四种嵌套值方式的访问速度比第五种慢?,javascript,performance,Javascript,Performance,我正在构建一个示例来说明访问嵌套对象成员所需的时间,我发现了这种奇怪的现象。出于某种原因,第四个嵌套对象成员的测试运行速度明显慢于第五个。我在Chrome和Firefox中尝试过这个,得到了相同的结果 知道为什么会发生这种情况吗?问题是,对象1.2.3.4没有值属性。在这种情况下,JavaScript遍历原型链,寻找缺少的属性,然后最终将NaN分配给sum您的对象是这样的,我的评论补充道: var obj = { "one": { "two": { "three": {
知道为什么会发生这种情况吗?问题是,
对象1.2.3.4
没有值
属性。在这种情况下,JavaScript遍历原型链,寻找缺少的属性,然后最终将NaN
分配给sum
您的对象是这样的,我的评论补充道:
var obj = {
"one": {
"two": {
"three": {
"four": {
"five": {
"value": 0
}
/* MISSING "value": 0 */
},
"value": 0
},
"value": 0
},
"value": 0
},
"value": 0
};
})
但是,
“四”
键处的对象没有“值”
键,因此显然JavaScript引擎必须做额外的工作来处理这种情况:错过对象上的键查找,错过对象原型对象上的键查找,返回未定义的,然后在将1
添加到undefined
时计算NaN
,我修正了你的测试。您没有“四”的值字段。我还为测试添加了一个写过程,以获得更好的值;