Por que uma palavra-chave reservada JavaScript é permitida como um nome de variável?

Respostas:

25

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.

CertainPerformance
fonte
2

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, e public;

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

Maheer Ali
fonte
0

'use strict';

isso dará um erro. use ferramentas de pacote como o webpack, grunt para compilar seu código.

Arunesh Saxena
fonte
leia a pergunta duas vezes
Manjeet Thakur 03/03