gramática
Deixe variável1 = valor1
parâmetro
variável1
O nome da variável a declarar.
valor1
O valor inicial atribuído à variável.
Observação
Use uma declaração Let para declarar uma variável cujo escopo é limitado ao bloco que o declara. Você pode atribuir valores a variáveis ao declarar variáveis ou pode atribuir valores a variáveis posteriormente no script.
Variáveis declaradas usando LET não podem ser usadas antes da declaração, caso contrário, um erro será causado.
Se sua variável não for inicializada na instrução Let, ela será atribuída automaticamente um valor JavaScript indefinido.
Exemplo:
var L = 10; {let l = 2; // Neste ponto, l = 2.} // Neste ponto, l = 10.// maneiras adicionais de declarar uma variável usando let.let Índice; let name = "thomas jefferson"; deixe resposta = 42, contador, numpages = 10; let myArray = new Array ();Escopo no nível do bloco
for (var i = 0; i <10; i ++) {} console.log (i); // 10for (let j = 0; j <10; j ++) {} console.log (j); // "ReferenceError: J não está definidoNenhuma promoção variável
console.log (a); // saída undefinedconsole.log (b); // erro referenceErrorConsole.log (c); // erro referenceErrorVar a = 2; deixe b = 2;
Preste atenção à diferença entre indefinido e referência
Zona morta temporária (TDZ)
Desde que você insira o escopo atual no nível do bloco, as variáveis usadas já existem, mas são zonas mortas antes da declaração e não podem ser operadas.
Nota: TypeOf não é mais uma operação 100% segura
tipo de x; // referenceerRortypeOf y // undefinedlet x;
Declarações repetidas não são permitidas
Seja x = 1; vamos x; // "SyntaxError: identificador 'x' já foi declarado y = 2; var y = 3; // y = 3
Escopo no nível do bloco
// gravação de função anônima (function () {var tmp = ...; ...} ()); // bloqueio de escrita de escopo {let tmp = ...; ...}O modo rigoroso do ES5 estipula que as funções só podem ser declaradas dentro do escopo e função de nível superior, e as declarações em outras situações (como se os blocos de código, blocos de código de loop) relatarão erros.
// es5'use strict '; if (true) {função f () {} // relate um erro}Como o ES6 introduz um escopo em nível de bloco, essa situação pode ser entendida como uma função declarada dentro de um escopo em nível de bloco, portanto, nenhum erro é relatado, mas os aparelhos que compõem o bloco não podem estar faltando.
// Relate um erro 'Use Strict'; if (true) função f () {}A variável global declarada não é mais uma propriedade da janela
"Use rigoroso"; var a = 1; console.log (window.a) // 1Let b = 1; console.log (window.b) // indefinido