Javascript 为什么第四种嵌套值方式的访问速度比第五种慢?

Javascript 为什么第四种嵌套值方式的访问速度比第五种慢?,javascript,performance,Javascript,Performance,我正在构建一个示例来说明访问嵌套对象成员所需的时间,我发现了这种奇怪的现象。出于某种原因,第四个嵌套对象成员的测试运行速度明显慢于第五个。我在Chrome和Firefox中尝试过这个,得到了相同的结果 知道为什么会发生这种情况吗?问题是,对象1.2.3.4没有值属性。在这种情况下,JavaScript遍历原型链,寻找缺少的属性,然后最终将NaN分配给sum您的对象是这样的,我的评论补充道: var obj = { "one": { "two": { "three": {

我正在构建一个示例来说明访问嵌套对象成员所需的时间,我发现了这种奇怪的现象。出于某种原因,第四个嵌套对象成员的测试运行速度明显慢于第五个。我在Chrome和Firefox中尝试过这个,得到了相同的结果


知道为什么会发生这种情况吗?

问题是,
对象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
,我修正了你的测试。您没有“四”的值字段。我还为测试添加了一个写过程,以获得更好的值;