理解局部变量、闭包和迭代器
understanding local variables, closures and iterators
我有一个如下所示的代码块,它是一个同步函数。
我想收集 reply
项的信息。
然而,即使我有项目,回复也总是 returning 为空数组。
当我检查调试器时,信息显示 reply
作为闭包变量,而不是 local
。
我想知道这里是否有我不明白的提升?
invStatus() {
let reply: string[] = []
Logger.log('player.status.items:', this.items)
if (!this.items.length) {
reply.push('nothing')
} else this.items.map(item => {
Logger.log('item', item)
reply.push[`- ${item.name}`]
})
Logger.log('player.status.reply:', reply)
return reply
}
嗯,这也是打字稿,我想知道转译器的行为是否略有不同?
我可能应该在这里使用 .forEach
,因为我没有捕获地图的 return 或转换事物,但我知道它具有相同的迭代器行为。唯一的另一件事是使用更可靠的 for x of
,但我想在这里了解问题!
我认为你犯了语法错误。
观察这一行:
reply.push[`- ${item.name}`]
在这里,您使用的是 方括号.
,而不是 parantheses
更正后的代码是,
reply.push(`- ${item.name}`)
我知道 javascript 但不知道打字稿,但我相信这一定是问题的原因。
我有一个如下所示的代码块,它是一个同步函数。
我想收集 reply
项的信息。
然而,即使我有项目,回复也总是 returning 为空数组。
当我检查调试器时,信息显示 reply
作为闭包变量,而不是 local
。
我想知道这里是否有我不明白的提升?
invStatus() {
let reply: string[] = []
Logger.log('player.status.items:', this.items)
if (!this.items.length) {
reply.push('nothing')
} else this.items.map(item => {
Logger.log('item', item)
reply.push[`- ${item.name}`]
})
Logger.log('player.status.reply:', reply)
return reply
}
嗯,这也是打字稿,我想知道转译器的行为是否略有不同?
我可能应该在这里使用 .forEach
,因为我没有捕获地图的 return 或转换事物,但我知道它具有相同的迭代器行为。唯一的另一件事是使用更可靠的 for x of
,但我想在这里了解问题!
我认为你犯了语法错误。
观察这一行:
reply.push[`- ${item.name}`]
在这里,您使用的是 方括号.
更正后的代码是,
reply.push(`- ${item.name}`)
我知道 javascript 但不知道打字稿,但我相信这一定是问题的原因。