En este tutorial, aprenderá sobre la diferencia entre let y var en JavaScript con la ayuda de ejemplos.
En JavaScript, las palabras clave var
y let
se utilizan para declarar variables.
La let
palabra clave se introdujo en la versión posterior de JavaScript conocida como ES6 (ES2015) . Y es la forma preferida de declarar variables.
JavaScript deja Vs var
Aquí está la descripción general de las diferencias entre let
y var
.
dejar | var |
---|---|
let tiene ámbito de bloque. | var tiene un alcance de función. |
let no permite redeclarar variables. | var permite redeclarar variables. |
El izado no ocurre en let. | El izado ocurre en la var. |
JavaScript permite Vs var en el ámbito local
var tiene un alcance de función
La variable declarada dentro de una función con var
se puede usar en cualquier lugar dentro de una función. Por ejemplo,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
En el programa anterior, la variable a se declara con var
. La variable a se puede usar en cualquier lugar dentro de la función greet
.
let tiene alcance de bloque
let
Solo se puede acceder a la variable declarada con dentro de un bloque de código. Por ejemplo,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Salida
hola mundo Uncaught ReferenceError: b no está definido
En el programa anterior, la variable a se declara dentro de la función y se puede acceder a ella desde cualquier lugar dentro de la función (a se convierte en función del ámbito).
Sin embargo, la variable b se declara dentro de la if
declaración del bloque. b tendrá un alcance de bloque y solo se puede acceder dentro del if
bloque.
Por lo tanto, cuando intenta acceder a b fuera del if
bloque, se produce un error (como se muestra arriba en el programa).
Nota : Las variables declaradas dentro de una función tendrán el ámbito de función para ambos var
y let
.
let no permite redeclarar variables
1. Una variable declarada con se var
puede volver a declarar . Por ejemplo,
var a = 5; // 5 var a = 3; // 3
Una variable declarada con let
no se puede volver a declarar dentro del mismo bloque o del mismo alcance. Por ejemplo,
let a = 5; let a = 3; // error
Salida
Error de sintaxis no detectado: el identificador 'a' ya ha sido declarado
2. Volver a declarar una variable con var
un alcance o bloque diferente también cambia el valor de la variable externa. Por ejemplo,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
La redeclaración de una variable con let
un alcance o bloque diferente trata esa variable como una variable diferente. Y el valor de una variable exterior no cambia. Por ejemplo,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Cuando var
se usa una variable declarada con en un ciclo, el valor de esa variable cambia. Por ejemplo,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
En el programa anterior, el for
ciclo redeclara la variable a. Por lo tanto, el valor de a
se cambia a 3 al final.
Cuando una variable declarada con let se usa en un ciclo, el valor de una variable no cambia. Por ejemplo,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
En el programa anterior, el for
bucle trata la variable a como una variable diferente a la declarada anteriormente. Y el alcance de esa variable está solo dentro del for
ciclo. Por tanto, el valor de la variable a sigue siendo 2 al final.
dejar no permite izar
Las variables declaradas con var
se elevan a la parte superior del alcance del programa. Por ejemplo,
console.log(a); var a; // undefined (not an error)
La palabra clave let
no permite el izado. Por ejemplo,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Si desea obtener más información sobre izado, visite JavaScript izado.
let y var Browser Support
La mayoría de los navegadores modernos admiten el uso de let
. Sin embargo, algunos navegadores no son totalmente compatibles let
.
Para obtener más información, visite JavaScript permite que el navegador sea compatible.
Nota : En caso de alcance global, ambos var
y let
se comportarán de la misma forma. Por ejemplo,
var a = 5; // 5
La variable a tendrá un alcance global y se puede acceder a ella en cualquier parte del programa.
let a = 5; // 5
La variable a tendrá un alcance global y se puede acceder a ella en cualquier parte del programa.