Мутирующий ключ внутри JavaScript для цикла for..in

Я делаю вызов кода с помощью следующего решения:

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 ответов

Другие вопросы по тегам