理解局部变量、闭包和迭代器

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 但不知道打字稿,但我相信这一定是问题的原因。