在JavaScript循环中改变JavaScript的键

时间:2016-12-08 01:17:36

标签: javascript for-in-loop

我正在使用以下解决方案进行代码质询:



let files = {a: {b: true}}
// return 'a/b'

function getPath(file) {
  let output = [];
  for (key in file) {
    if (file[key] instanceof Object) {
      let saved = key
      console.log(`Before getPath ${key}`)
      let paths = getPath(file[key])
      console.log(`After getPath ${key}`)
      paths.forEach((path) => {
        output.push(`${saved}/${path}`)
      })
    } else {
      output.push(`${key}`)
    }
  }
  return output
}

getPath(files)




为什么"键" let paths = getPath(file[key])之前和之后的变化?在此递归中,将存在两个级别的for-in循环。由于范围/上下文问题,内部for-in循环是否可能导致问题?是因为"关键"忽略功能范围并改变它?

0 个答案:

没有答案