понимание локальных переменных, замыканий и итераторов - PullRequest
0 голосов
/ 02 августа 2020

У меня есть блок кода, подобный приведенному ниже, это функция syn c. Я хочу собрать reply информацию об элементах.

Однако ответ всегда возвращается как пустой массив, даже когда у меня есть элементы. Когда я проверяю отладчик, в информации отображается 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
  }

хм, это тоже машинописный текст, интересно, не отличается ли поведение транспилятора? возврат карты или преобразование вещей, но я понимаю, что это имеет такое же поведение итератора. Единственное, что можно сделать, это использовать go с for x of, что более надежно, но я хотел бы разобраться в проблеме здесь!

1 Ответ

1 голос
/ 02 августа 2020

Я думаю, вы допустили синтаксическую ошибку.

Обратите внимание на эту строку:

reply.push[`- ${item.name}`]

Здесь вместо скобок вы использовали квадрат скобки .

Исправленный код:

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

Я знаю javascript, но не машинописный текст, но я считаю, что это должно быть причиной проблемы.

...