deja var o var para dejar

En los últimos meses, he estado aprendiendo mucho sobre JavaScript. Habiendo abusado de los idiomas durante años, me atrevo a decir que ahora tengo una mejor comprensión del idioma y he llegado aamor Los beneficios de su naturaleza funcional.
Últimamente he empezado a aprender Scheme, pero eso es solo por diversión. Navegando por elReferencia de MDN Noté que JS, aunque carece de un ámbito de bloque, tiene una palabra clave que se puede usar para declarar una variable local a un bloque dado, al igual que Scheme'slet:

for (var i=0;i<someArray.length;i++)
{
    console.log(someArray[i]);
}
console.log(i);//will log someArray's length

Mientras:

for (let i=0;i<someArray.length;i++)
{
    console.log(someArray[i]);
}
console.log(i);//undefined

Entonces, lo que quiero saber ahora es: ¿Por qué no?let utilizado más a menudo? ¿Tiene algo que ver con el soporte para X-browser? ¿Es solo uno de esos?golosinas menos conocidas?
En resumen, ¿cuáles son las ventajas de usarvar terminadolet, cuales son las advertencias?

Por lo que puedo decir, el comportamiento delet es, en todo caso, más coherente (las declaraciones dobles en un solo bloque aumentan unaTypeError, excepto por los cuerpos de función (los borradores de ECMA6 solucionan esto, sin embargo).
Para ser honesto, aparte de que esta característica / palabra clave no es muy conocida, me cuesta pensar enalguna argumento en contra de usarlet para bucles, o en cualquier lugar donde una variable temporal genere un código más legible.

Respuestas a la pregunta(1)

Su respuesta a la pregunta