, чтобы сохранить свой прогресс
Исследуйте различия между ключевыми словами var и let
Одна из самых больших проблем с объявлением переменных с ключевым словом var
заключается в том, что вы можете переобъявить существующие переменные без каких-либо ошибок (собственно, ошибки здесь и не должно быть, это обычное поведение, просто такое поведение увеличивает вероятность возникновения логических ошибок и лучше этого избегать).
var camper = "James";
var camper = "David";
console.log(camper); // "David"
Как вы можете видеть в приведенном выше коде, переменная camper
изначально объявляется со значением James
, а затем переопределяется со значением David
, и по сути это уже новая переменная. В небольшом приложении вы можете не столкнуться с этой проблемой, но когда ваш код станет больше, вы можете случайно перезаписать переменную, которую вы не намеревались перезаписывать (и в следствии получить логическую ошибку). Поскольку это поведение не вызывает ошибки, поиск и исправление таких ошибок усложняется. В ES6 было введено новое ключевое слово let
чтобы решить эту потенциальную проблему, возникающую при использовании ключевого слова var
. Если вы замените код с var
на let
в объявлениях переменных вышеприведенного кода, результатом будет ошибка.
let camper = "James";
let camper = "David"; // Uncaught SyntaxError: Identifier 'camper' has already been declared
Эту ошибку можно увидеть в консоли вашего браузера. Таким образом, в отличие от var
, при использовании let
переменная с тем же именем может быть объявлена только один раз в пределах видимости.
Важное замечание: Еще раз уточню на счет уникальности переменных в пределах области видимости. Вот пример:
{
let camper = "James";
{
let camper = "David";
console.log(camper); // "David"
}
console.log(camper); // "James"
}
Здесь не возникнет ошибка, а переменные не перетрутся, так как они находятся в разных областях видимости (переменные, объявленные с ключевым словом let
находятся в блочной области видимости (блочная область ограничивается фигурными скобками { ... }
))
Обновите код, используя только ключевое слово let
.
/**
* Your test output will go here.
*/