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

Javascript 理解局部变量、闭包和迭代器,javascript,typescript,asynchronous,iterator,closures,Javascript,Typescript,Asynchronous,Iterator,Closures,我有一个如下所示的代码块,它是一个同步功能。 我想在回复中收集有关项目的信息 然而,即使我有项目,reply也总是作为空数组返回。 当我签入调试器时,信息将reply显示为闭包变量,而不是local。 我想知道这里的吊装是否有什么我不明白的地方 嗯,这也是typescript,我想知道transpiler的行为是否有细微的不同 我可能应该在这里使用.forEach,因为我没有捕获映射的返回或转换对象,但我知道它具有相同的迭代器行为。唯一的另一件事是为x的使用一个更可靠的,但我想了解这里的问题

我有一个如下所示的代码块,它是一个同步功能。 我想在
回复中收集有关项目的信息

然而,即使我有项目,reply也总是作为空数组返回。 当我签入调试器时,信息将
reply
显示为闭包变量,而不是
local
。 我想知道这里的吊装是否有什么我不明白的地方

嗯,这也是typescript,我想知道transpiler的行为是否有细微的不同


我可能应该在这里使用
.forEach
,因为我没有捕获映射的返回或转换对象,但我知道它具有相同的迭代器行为。唯一的另一件事是为x的
使用一个更可靠的,但我想了解这里的问题

我认为你犯了语法错误

注意这一点:

reply.push[`-${item.name}`]
在这里,您使用了方括号,而不是偏执

修正后的代码是

reply.push(`-${item.name}`)

我知道javascript,但不知道typescript,但我相信这一定是问题的原因。

你说得对!我用打字脚本来防止我犯那样的愚蠢错误。谢谢
  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
  }