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 выполняет проверку повторного выделения и генерирует исключение здесь?