La guía de Babel para ES6 dice:
let
Es lo nuevovar
.
Aparentemente, la única diferencia es que var
se limita a la función actual , mientras que let
se limita al bloque actual . Hay algunos buenos ejemplos en esta respuesta .
No veo ninguna razón para usar var
en el código ES6. Incluso si desea abarcar una variable dada a toda la función, puede hacerlo let
colocando la declaración en la parte superior del bloque de funciones, que es lo que debería hacer de var
todos modos para indicar el alcance real. Y si quieres ver algo más fino en un for
bloque o algo, entonces puedes hacerlo también.
Entonces, mi instinto es dejar de usar por var
completo al escribir el código ES6.
Mi pregunta es, ¿estoy equivocado sobre esto? ¿Hay algún caso legítimo donde var
sería preferible let
?
let
declaración justo en la parte superior de una función, creo que es igual de obvio que tenía la intención de abarcarla a toda la función. No creo que usarlo lo var
haga más claro que simplemente ubicarlo en la parte superior.
var
aún existe es la compatibilidad con versiones anteriores. Si no fuera por eso, se habrían eliminado por var
completo, o nunca se habrían presentado let
en primer lugar, en cambio, cambiarían la semántica var
a lo que podría decirse que debería haber sido todo el tiempo.
var
parecen débiles, y no lo suficiente como para garantizar tener un tercer tipo de variable que salta a la vista. Puede abarcar let
a una función completa simplemente colocándola en la parte superior de la función, que tiene una intención mucho más clara que escribir var
en un bloque (para que se levante de ese bloque para que luego pueda usarlo fuera del bloque - extraño). Advierte que si usted abarca let
a una función, entonces "es solo la posición la que señala la diferencia, en lugar de la sintaxis", pero creo que eso es algo bueno.
var
. Los ejemplos que presenta para mantenerlos var
parecen artificiales, y se basan en graves errores de codificación. ¡Es mucho mejor encontrarse con un error y verse obligado a corregir dichos errores que usar funciones de lenguaje que le permitan salirse con la suya! ¿Qué sigue, aconseje envolver todo en un intento / captura para evitar accidentes? El resto de ese enlace es bueno, pero no estoy de acuerdo con esa parte en particular.
var
como un indicador consciente de que esta variable está destinada a toda la función podría ser una convención útil de "autodocumentación" .