Уже объявленные переменные консоли Chrome выдают неопределенные ссылочные ошибки для let
Недавно я столкнулся с этой странной вещью в консоли Chrome. Здесь я намеренно назначаю неопределенную вещь для того, чтобы выдать ошибку.
let a = werwr // Uncaught ReferenceError: werwr is not defined
Затем, когда я попытался присвоить что-то законное, это произошло:
let a = "legit string" // Uncaught SyntaxError: Identifier 'a' has already been declared
поэтому я не могу использовать «let», потому что a уже объявлен. Поэтому я попытался переназначить что-то еще на «уже объявленный»
a = "legit string" // Uncaught ReferenceError: a is not defined
Поэтому кажется, что я не могу переназначить что-то еще на a, но в то же время объявлено a, поэтому я не могу снова использовать let.
Я понимаю разницу между объявлением и назначением переменной. Однако здесь кажется, что ни один не мог быть сделан снова. Это как-то связано со сферой «let» в консоли? Потому что то же самое полностью работает для "вар"
var a = werwr
// Uncaught ReferenceError: werwr is not defined
a = ”legit string“
// ”legit string“
var a = "legit string"
// Uncaught SyntaxError: Identifier 'a' has already been declared
Следовать за
Кажется, есть некоторая разница между «ручным» подъемом оператора let и неявным регистром.
throw new Error
let example = 5
// same errors as before
в то время как в этом случае пример может быть переназначен снова.
let example
throw new Error
example = 5