La guía de Babel para ES6 dice:
letEs lo nuevovar.
Aparentemente, la única diferencia es que varse limita a la función actual , mientras que letse limita al bloque actual . Hay algunos buenos ejemplos en esta respuesta .
No veo ninguna razón para usar varen el código ES6. Incluso si desea abarcar una variable dada a toda la función, puede hacerlo letcolocando la declaración en la parte superior del bloque de funciones, que es lo que debería hacer de vartodos modos para indicar el alcance real. Y si quieres ver algo más fino en un forbloque o algo, entonces puedes hacerlo también.
Entonces, mi instinto es dejar de usar por varcompleto al escribir el código ES6.
Mi pregunta es, ¿estoy equivocado sobre esto? ¿Hay algún caso legítimo donde varsería preferible let?
letdeclaració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 varhaga más claro que simplemente ubicarlo en la parte superior.
varaún existe es la compatibilidad con versiones anteriores. Si no fuera por eso, se habrían eliminado por varcompleto, o nunca se habrían presentado leten primer lugar, en cambio, cambiarían la semántica vara lo que podría decirse que debería haber sido todo el tiempo.
varparecen débiles, y no lo suficiente como para garantizar tener un tercer tipo de variable que salta a la vista. Puede abarcar leta 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 varen un bloque (para que se levante de ese bloque para que luego pueda usarlo fuera del bloque - extraño). Advierte que si usted abarca leta 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 varparecen 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.
varcomo un indicador consciente de que esta variable está destinada a toda la función podría ser una convención útil de "autodocumentación" .