JavaScript let Vs var (com exemplos)

Neste tutorial, você aprenderá sobre a diferença entre let e var em JavaScript com a ajuda de exemplos.

Em JavaScript, as palavras-chave vare letsão usadas para declarar variáveis.

A letpalavra-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 lete 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 varpode 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 letsó 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 ifinstrução do bloco. b terá escopo de bloco e só pode ser acessado dentro do ifbloco.

Portanto, quando você tenta acessar b fora do ifbloco, 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 vare let.

não permite redeclarar Variáveis

1. Uma variável declarada com varpode ser declarada novamente. Por exemplo,

 var a = 5; // 5 var a = 3; // 3

Uma variável declarada com letnã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 varum 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 letem 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 forloop 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 forloop trata a variável a como uma variável diferente daquela declarada acima. E o escopo dessa variável está apenas dentro do forloop. Portanto, o valor da variável a permanece 2 no final.

let não permite içamento

As variáveis ​​declaradas com varsão içadas para o topo do escopo do programa. Por exemplo,

 console.log(a); var a; // undefined (not an error)

A palavra-chave letnã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 vare letse 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.

Artigos interessantes...