无法理解嵌套javascript对象

时间:2017-10-18 18:06:21

标签: javascript recursion

我试图理解递归如何使用嵌套的js对象,它可能具有相同的键名。例如,在下面的对象中,嵌套中的键是相同的。 因此,当我循环时,我期待obj[keys]将始终位于第一行(标记为//第1行)。

我试图理解如果所有键具有相同的名称,js将如何知道如何循环。不确定我在理解的地方出错

var obj = {
  a: {         // Line 1
    a: {       // Line 2
      a: {     // Line 3
        sweptArea: 5
      }
    }
  }
}

function loop(obj, keyName) {
  for (var keys in obj) {
    if (obj.hasOwnProperty(keys) && typeof obj[keys] === 'object') {
      if (obj[keys][keyName] !== undefined) {
        console.log(obj[keys][keyName])
      } else {
        // In my understanding in all the iteration it will point to obj.a marked as line one
        loop(obj[keys], 'sweptArea')
      }
    }

  }

}

loop(obj, 'sweptArea')

1 个答案:

答案 0 :(得分:4)

当您说obj[keys]仅查找obj上该名称的密钥时。该表达式本身不会递归。

每次调用函数时,传递给定义到obj参数的变量的值都不同。