JavaScript Let
A let
palavra-chave foi introduzida em
ES6 (2015) .
Variáveis definidas com let
não podem ser redeclaradas.
As variáveis definidas com let
devem ser declaradas antes do uso.
As variáveis definidas com let
têm Escopo do Bloco.
Não pode ser redeclarado
Variáveis definidas com let
não podem ser redeclaradas .
Você não pode redeclarar acidentalmente uma variável.
Com let
você não pode fazer isso:
Exemplo
let x = "John Doe";
let x = 0;
// SyntaxError: 'x' has already been declared
Com var
você pode:
Exemplo
var x = "John Doe";
var x = 0;
Escopo do Bloco
Antes do ES6 (2015), JavaScript tinha apenas Escopo Global e Escopo de Função .
O ES6 introduziu duas novas palavras-chave JavaScript importantes: let
e const
.
Essas duas palavras-chave fornecem Block Scope em JavaScript.
Variáveis declaradas dentro de um bloco {} não podem ser acessadas de fora do bloco:
Exemplo
{
let x = 2;
}
// x can NOT be used here
Variáveis declaradas com a palavra- var
chave NÃO podem ter escopo de bloco.
Variáveis declaradas dentro de um bloco {} podem ser acessadas de fora do bloco.
Exemplo
{
var x = 2;
}
// x CAN be used here
Redeclarando variáveis
Redeclarar uma variável usando a palavra- var
chave pode causar problemas.
Redeclarar uma variável dentro de um bloco também redeclarará a variável fora do bloco:
Exemplo
var x = 10;
// Here x is 10
{
var x = 2;
// Here x is 2
}
// Here x is 2
Redeclarar uma variável usando a palavra- let
chave pode resolver esse problema.
Redeclarar uma variável dentro de um bloco não redeclarará a variável fora do bloco:
Exemplo
let x = 10;
// Here x is 10
{
let x = 2;
// Here x is 2
}
// Here x is 10
Suporte ao navegador
A let
palavra-chave não tem suporte total no Internet Explorer 11 ou anterior.
A tabela a seguir define as primeiras versões do navegador com suporte total para a let
palavra-chave:
Chrome 49 | Edge 12 | Firefox 44 | Safari 11 | Opera 36 |
Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
Redeclarando
Redeclarar uma variável JavaScript com var
é permitido em qualquer lugar de um programa:
Exemplo
var x = 2;
// Now x is 2
var x = 3;
// Now x is 3
Com let
, não é permitido redeclarar uma variável no mesmo bloco:
Exemplo
var x = 2; // Allowed
let x = 3; // Not allowed
{
let x = 2; // Allowed
let x = 3 // Not allowed
}
{
let x = 2; // Allowed
var x = 3 // Not allowed
}
Redeclarar uma variável com let
, em outro bloco, É permitido:
Exemplo
let x = 2; // Allowed
{
let x = 3; // Allowed
}
{
let x = 4; // Allowed
}
Deixar Içamento
As variáveis definidas com var
são içadas para o topo e podem ser inicializadas a qualquer momento.
Significado: Você pode usar a variável antes de ser declarada:
Exemplo
Isso está bem:
carName = "Volvo";
var carName;
Se você quiser aprender mais sobre içamento, estude o capítulo JavaScript Içamento .
As variáveis definidas com let
também são içadas para o topo do bloco, mas não inicializadas.
Significado: Usar uma let
variável antes de ser declarada resultará em
ReferenceError
:
Exemplo
carName = "Saab";
let carName = "Volvo";