Мутирующий ключ внутри 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 вызывает проблему из-за проблемы контекста / контекста? Это потому, что "ключ" игнорирует область действия функции и изменяет ее?