Var и let redeclaration в Javascript
Как мы все знаем:
Если идентификатор уже определен в области видимости, то использование идентификатора в объявлении let внутри этой области вызывает ошибку. - "YDFJS"
и var
не имеет такого предела:
var a = 1;
var a = 2; // works fine
Ниже приведен фрагмент ниже,
let a = 1;
var a = 2; // SyntaxError: Identifier 'a' has already been declared
Из-за "Variable Hoisting", я думаю, этот код будет переведен следующим образом:
var a;
let a = 1;
a = 2;
поэтому исключение SyntaxError должно быть выбрано первой строкой: let a = 1
, , но как в Node, так и в Chrome, исключение было выбрано второй строкой: var a = 2
.
Я запутался, почему var
выполняет проверку повторного выделения и генерирует исключение здесь?