我正在使用以下解决方案进行代码质询:
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循环是否可能导致问题?是因为"关键"忽略功能范围并改变它?