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.