const dentro de escopos de bloco no Node e Chrome (V8)

Estou escrevendo um aplicativo nodejs (v4.2.4) onde encontrei algum comportamento estranho.

function A(number) {
 this.number = number;
}

for(var i = 0; i < 3; i++) {
  const a = new A(i);

  console.log(a.number);
}

const b = new A(99);
console.log(b.number);

Minha intuição, vinda de Java (e a do FireFox), é que a saída deveria ter sido

0
1
2
99

No entanto, o Node (e o Chrome) me fornece

0
0
0
99

Eu investiguei e entendi deMSN - escopo de bloco estevar não tem escopo de bloco em javascript. Olhando mais longe,MSN - const descreve uma declaração const como tendo escopo de bloco:

As constantes têm escopo de bloco, bem como variáveis definidas usando a instrução let. O valor de uma constante não pode mudar através da reatribuição e não pode ser redeclarado.

Nesse caso, eu diria que o Node e o Chrome (nesse caso provavelmente o V8), têm algum tipo de manipulação obscura deconst em escopos de bloco. Mas eles também escrevem que

Esta declaração cria uma constante que pode ser global ou local para a função na qual é declarada.

Isso significa que o V8 coloca todos osconst declaração como uma variável global enquanto o FireFox cria uma local? Como é possível que algo crucial como esse seja implementado de maneira tão diferente?

questionAnswers(2)

yourAnswerToTheQuestion