O console do Chrome já declarou variáveis lançam erros de referência indefinidos para permitir

Recentemente eu me deparei com essa coisa estranha no console do Chrome. Aqui, intencionalmente, atribuo uma coisa indefinida a a para gerar um erro.

let a = werwr // Uncaught ReferenceError: werwr is not defined

Então, quando tentei atribuir algo legítimo a, isso aconteceu:

let a = "legit string"   // Uncaught SyntaxError: Identifier 'a' has already been declared

então não posso usar "let" porque a já foi declarada. Então, tentei reatribuir outra coisa ao "já declarado um"

a = "legit string"   //  Uncaught ReferenceError: a is not defined

Parece que não posso reatribuir outra coisa a um mas, ao mesmo tempo, um foi declarado, então não posso usar let novamente.

Eu entendo a diferença entre declarar e atribuir uma variável. No entanto, aqui parece que nenhum dos dois poderia ser feito novamente. Isso tem algo a ver com o escopo de "deixar" no console? Porque a mesma coisa funciona totalmente para "var"

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

Acompanhamento

Parece haver alguma diferença entre içar "manualmente" a instrução let versus o caso implícito.

throw new Error
let example = 5
// same errors as before

enquanto, neste caso, o exemplo pode ser reatribuído novamente.

let example
throw new Error
example = 5

questionAnswers(2)

yourAnswerToTheQuestion