Neste tutorial, você aprenderá sobre a diferença entre let e var em JavaScript com a ajuda de exemplos.
Em JavaScript, as palavras-chave var
e let
são usadas para declarar variáveis.
A let
palavra-chave foi introduzida na versão posterior do JavaScript conhecida como ES6 (ES2015) . E é a maneira preferida de declarar variáveis.
JavaScript permite Vs var
Esta é a visão geral das diferenças entre let
e var
.
deixei | var |
---|---|
let tem escopo de bloco. | var tem escopo de função. |
let não permite redeclarar variáveis. | var permite redeclarar variáveis. |
O içamento não ocorre na locação. | O içamento ocorre na var. |
JavaScript permite Vs var no escopo local
var tem escopo de função
A variável declarada dentro de uma função com var
pode ser usada em qualquer lugar dentro de uma função. Por exemplo,
// 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
No programa acima, a variável a é declarada com var
. A variável a pode ser usada em qualquer lugar dentro da função greet
.
let tem escopo de bloco
A variável declarada com let
só pode ser acessada dentro de um bloco de código. Por exemplo,
// 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();
Resultado
olá mundo Referência não capturadaError: b não está definido
No programa acima, a variável a é declarada dentro da função e pode ser acessada em qualquer lugar dentro da função (a torna-se o escopo da função).
No entanto, a variável b é declarada dentro da if
instrução do bloco. b terá escopo de bloco e só pode ser acessado dentro do if
bloco.
Portanto, quando você tenta acessar b fora do if
bloco, ocorre um erro (conforme mostrado acima no programa).
Observação : as variáveis declaradas dentro de uma função terão escopo de função para var
e let
.
não permite redeclarar Variáveis
1. Uma variável declarada com var
pode ser declarada novamente. Por exemplo,
var a = 5; // 5 var a = 3; // 3
Uma variável declarada com let
não pode ser declarada novamente dentro do mesmo bloco ou mesmo escopo. Por exemplo,
let a = 5; let a = 3; // error
Resultado
SyntaxError não capturado: O identificador 'a' já foi declarado
2. Redeclarar uma variável com var
um escopo ou bloco diferente também altera o valor da variável externa. Por exemplo,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Redeclarar uma variável let
em um escopo ou bloco diferente trata essa variável como uma variável diferente. E o valor de uma variável externa não muda. Por exemplo,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Quando uma variável declarada com var
é usada em um loop, o valor dessa variável muda. Por exemplo,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
No programa acima, o for
loop reafirma a variável a. Portanto, o valor de a
é alterado para 3 no final.
Quando uma variável declarada com let é usada em um loop, o valor de uma variável não muda. Por exemplo,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
No programa acima, o for
loop trata a variável a como uma variável diferente daquela declarada acima. E o escopo dessa variável está apenas dentro do for
loop. Portanto, o valor da variável a permanece 2 no final.
let não permite içamento
As variáveis declaradas com var
são içadas para o topo do escopo do programa. Por exemplo,
console.log(a); var a; // undefined (not an error)
A palavra-chave let
não permite içamento. Por exemplo,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Se você quiser saber mais sobre içamento, visite JavaScript Hoisting
let e var Suporte do navegador
A maioria dos navegadores modernos suporta o uso de let
. No entanto, alguns navegadores não são totalmente compatíveis let
.
Para saber mais, visite JavaScript e suporte ao navegador.
Nota : No caso de escopo global, ambos var
e let
se comportarão da mesma maneira. Por exemplo,
var a = 5; // 5
A variável a terá escopo global e pode ser acessada em qualquer lugar do programa.
let a = 5; // 5
A variável a terá escopo global e pode ser acessada em qualquer lugar do programa.