Наиболее релевантные ответы здесь относятся не к let , который является областью действия блока, а к var , который поднимается. Я не могу получить окончательный ответ на этот вопрос.
У меня есть переменная, объявленная глобально, которая инициализируется один раз:
let firePaused = false;
и затем функция в обработчике клавиатуры, которая работает каждый раз, когда я нажимаю кнопку:
function actOnKeyPress() {
if (rightPressed) {
game.hero.rotate(game.hero.speed);
} else if (leftPressed) {
game.hero.rotate(-game.hero.speed);
}
if (!firePressed) {
firePaused = false;
}
if (firePressed && options.numberOfBullets > 0) {
if (!firePaused) {
fireBullet();
firePaused = true;
}
}
}
(не имеет отношения к вопросу, но его цель - позволить игроку стрелять только один раз, для того, чтобы он мог снова выстрелить, должно быть событие keyup)
По правилам чистого кода я должен объявить переменную в верхней части функции ... НО это означает, что она будет переопределена при каждом нажатии кнопки.
Здесь написано https://www.sitepoint.com/how-to-declare-variables-javascript/
Инициализация: когда вы объявляете переменную, она автоматически
инициализирован, что означает, что память выделена для переменной
Движок JavaScript.
Поэтому я буду создавать новую переменную каждый раз, когда используется ключевое слово let .
Стоит ли мне писать в начале функции условие, чтобы проверить, объявлено ли еще firePaused
, а если нет, то объявить его? Это кажется полным перебором.