Sabemos que leté uma palavra-chave reservada que define uma variável em JavaScript.
var let = 2;
console.log(let); // return 2
Então, por que isso não é um erro?
Sabemos que leté uma palavra-chave reservada que define uma variável em JavaScript.
var let = 2;
console.log(let); // return 2
Então, por que isso não é um erro?
Respostas:
let é apenas uma palavra reservada no modo estrito:
'use strict';
var let = 5;
Untaught SyntaxError: Palavra reservada inesperada no modo estrito
Isso ocorre porque os navegadores geralmente priorizam a compatibilidade com versões anteriores, acima de tudo. Embora tenha letsido introduzido no ES2015 (e seu uso foi previsto antes disso), os scripts anteriores que usavam letcomo nome de variável continuariam a funcionar conforme desejado. Por exemplo, se seu script foi escrito em 2008:
var let = 2;
console.log(let);
Então continuaria a funcionar também em 2020.
Por razões muito semelhantes, asynce awaittambém são permitidos como nomes de variáveis .
Quanto ao motivo pelo qual o uso de leterros no modo estrito - modo estrito foi introduzido no ES5, em 2009. Naquela época, os designers de linguagem viram que o uso de novas palavras-chave para declarar variáveis era uma possibilidade no futuro, mas não era. ainda está em pedra, e o ES6 ainda estava muito longe. Depois que o ES5 fosse lançado, os criadores de scripts poderiam optar pelo modo estrito para tornar o código menos confuso e alterar erros silenciosos para erros explícitos. Embora letnão era utilizável para declaração de variável ainda , proibindo-o como um nome de variável no modo estrito melhorou a legibilidade de futuros scripts que optaram em modo estrito, ao mesmo tempo, não quebrar os scripts existentes.
lete alguns dos outros trabalhos funcionam como palavras reservadas apenas no modo estrito. As especificações dizem
Não permitido no modo estrito : Aqueles que são contextualmente anulado como identificadores, no código de modo estrito:
let,static,implements,interface,package,private,protected, epublic;
Você pode ver letdentro da lista de palavras que não são permitidas apenas no modo estrito. Se você deseja lançar um erro ao usar letcomo nome de variável, pode usar o modo estrito
"use strict";
var let = 3
'use strict';
isso dará um erro. use ferramentas de pacote como o webpack, grunt para compilar seu código.