w3schools explícame entre diferencias diferencia javascript variables ecmascript-harmony ecmascript-6

javascript - explícame - ¿Cuándo debería usar let y var?



javascript let vs var (3)

Bueno, la respuesta es bastante simple: use var si necesita un alcance de función y let que necesite un alcance de bloque.

EDIT: ¡por favor lea la pregunta! Ya sé la diferencia. Esto no es un duplicado

Obviamente, ahora mismo siempre debería estar usando la palabra clave var ya que let no es compatible con todo.

Cuando la palabra clave let tiene mejor soporte (por ejemplo, estoy escribiendo una aplicación Node en un par de años que usa Harmony), ¿cuándo debería usar la palabra clave let frente a la palabra clave var ?

Entiendo la diferencia: var es para el alcance de funciones mientras let para enfoque de bloques, pero estoy buscando algo como "siempre use la palabra clave let " o "use la palabra clave var en la parte superior de las funciones, pero la palabra clave let en bloques como para bucles ".


Diría que, como principio, debe usar let siempre que no sea inconveniente hacerlo. Como:

for (let i = 0; i < 100; i++) { // Do something } if (condition) { let msg = a + b + c; console.log(msg); alert(msg); }

Las ventajas de este enfoque es:

  1. Menor riesgo de anular algún uso variable global para otra cosa
  2. Menor riesgo de pérdidas de memoria debido a que las variables permanecen en la memoria mucho después de que se vuelven irrelevantes

Use let como regla general, y var en ocasiones.

El alcance del bloque es la opción estándar y más legible, y facilitará la depuración. El ámbito de bloque hace que sea fácil ver exactamente dónde se encuentra una variable en el alcance. El análisis de funciones hace que las cosas sean mucho menos evidentes, y es mucho más fácil introducir errores accidentalmente con errores de alcance.

En general, cuanto menor sea el alcance que pueda usar, mejor. Por lo tanto, let pasar var .

En particular, ayuda a lidiar con el problema interminable de cerrar las variables y no darse cuenta de que su valor cambiará antes de que se ejecute el cierre:

for (var i = 1; i <= 5; i++) { var item = document.createElement("LI"); item.appendChild(document.createTextNode("Item " + i)); let j = i; item.onclick = function (ev) { alert("Item " + j + " is clicked."); }; list.appendChild(item); }