¿Cuál es la diferencia de rendimiento entre ‘let’ y ‘var’ en JavaScript?

‘let’ se incluye en la secuencia de comandos ECMA 6ta Edición con el propósito de definir variables para un alcance específico de bloque. ‘var’ generalmente se usa cuando tiene que usarlo para un alcance global.

Las variables ‘var’ se pueden usar en el alcance de la ventana y las variables ‘let’ no se pueden usar en él.

Digamos, aquí tenemos dos variables declaradas. permítanos ver qué salida le da realmente

Por lo tanto, no se puede acceder a las variables en el objeto de ventana porque no se puede acceder globalmente.

las variables let se usan generalmente cuando hay un uso limitado de esas variables. Digamos, en bucles for, bucles while o dentro del alcance de las condiciones if, etc. Básicamente, siempre que el alcance de la variable tiene que ser limitado.

Por ej.

La salida será –

Ahora usemos la palabra clave var en lugar de let y veamos qué sucede:

¿Y la salida? ¿Qué piensas? Debería arrojar un error correcto. Pero no lo hace. Mira esto –

Y si hace lo mismo con la variable ‘let’, muestra el siguiente error:

Esto sucede que hubo acceso a la variable i fuera del alcance.

Espero que esto ayude.

Krish Bhanushali

http://www.krishbhanushali.me

La diferencia es el alcance. var se limita al bloque de funciones más cercano y let se limita al bloque de cierre más cercano, que puede ser más pequeño que un bloque de funciones. Ambos son globales si están fuera de cualquier bloque.

Además, las variables declaradas con let no son accesibles antes de declararse en su bloque adjunto. Como se ve en la demostración, esto generará una excepción ReferenceError.

Global:

Son muy similares cuando se usan así fuera de un bloque de funciones.

déjame = ‘ir’; // alcance global
var i = ‘capaz’; // alcance global

Sin embargo, las variables globales definidas con let no se agregarán como propiedades en el objeto de window global como las definidas con var .

console.log (window.me); // indefinido
console.log (window.i); // ‘poder’

Función:

Son idénticos cuando se usan así en un bloque de funciones.

function ingWithinEstablishedParameters () {
let terOfRecommendation = ‘¡increíble trabajador!’; // bloque de funciones con ámbito
var sityCheerleading = ‘¡vamos!’; // bloque de funciones con ámbito
}

Bloquear:

Aquí está la diferencia. let solo es visible en el bucle for() y var es visible para toda la función.

function allyIlliterate () {
// tuce * no * es visible aquí

for (let tuce = 0; tuce <5; tuce ++) {
// tuce solo es visible aquí (y en los paréntesis for ())
// y hay una variable tuce separada para cada iteración del bucle
}

// tuce * no * es visible aquí
}

función byE40 () {
// nish * es * visible aquí

para (var nish = 0; nish <5; nish ++) {
// nish es visible para toda la función
}

// nish * es * visible aquí
}

Redeclaración:

Asumiendo el modo estricto, var le permitirá volver a declarar la misma variable en el mismo ámbito. Por otro lado, let permitiremos:

‘uso estricto’;
déjame = ‘foo’;
déjame = ‘bar’; // SyntaxError: el identificador ‘yo’ ya se ha declarado
‘uso estricto’;
var me = ‘foo’;
var me = ‘bar’; // No hay problema, se reemplaza `me`.

Fuente: ¿Cuál es la diferencia entre usar “let” y “var” para declarar una variable?

‘var’ supera a ‘let’ y ‘const’ en prácticamente todos los puntos de referencia en jsperf.com. en la práctica, hay cero casos de uso para ‘let’ y ‘const’ , que ‘var’ no podría cumplir. si tiene ocd como yo y prioriza la coherencia de codificación, entonces siempre debe usar ‘var’.

Para su información, aquí está la discusión entre los ingenieros de Google y Microsoft en la preocupación de rendimiento con let / const sobre las razones técnicas por las que ‘let’ y ‘const’ son más lentos.

La siguiente respuesta del desbordamiento de la pila lo explica mejor:

¿Hay alguna diferencia de rendimiento entre ‘let’ y ‘var’

No hay diferencia de rendimiento entre ellos. ‘let’ le permite definir el alcance del nivel de bloque donde como var es le permite definir el alcance del nivel de función, eso es todo.