Уже объявленные переменные консоли 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

Ответы на вопрос(2)

Ваш ответ на вопрос