Pourquoi un mot clé réservé JavaScript est-il autorisé comme nom de variable?

Réponses:

25

let n'est qu'un mot réservé en mode strict:

'use strict';
var let = 5;

SyntaxError non capturée: mot réservé en mode strict inattendu

En effet, les navigateurs privilégient généralement la compatibilité descendante avant tout. Bien qu'il ait letété introduit dans ES2015 (et que son utilisation ait été prévue avant cette date), les scripts antérieurs qui étaient utilisés letcomme nom de variable continueraient de fonctionner comme souhaité. Par exemple, si votre script a été écrit en 2008:

var let = 2;
console.log(let);

Ensuite, il continuerait de fonctionner en 2020 également.

Pour des raisons très similaires, asyncet awaitsont également autorisés en tant que noms de variables .

Quant à savoir pourquoi l'utilisation d' leterreurs en mode strict - le mode strict a été introduite dans ES5, en 2009. À l'époque, les concepteurs de langage ont vu que l'utilisation de nouveaux mots clés pour déclarer des variables était une possibilité à l'avenir, mais ce n'était pas le cas. pas encore gravé dans la pierre, et ES6 était encore loin. Une fois ES5 sorti, les rédacteurs de scripts pouvaient opter pour le mode strict pour rendre le code moins confus et changer les erreurs silencieuses en erreurs explicites. Bien que letn'était pas utilisable pour la déclaration des variables encore , l' interdiction comme un nom variable en mode strict a amélioré la lisibilité des futurs scripts qui ont opté en mode strict, tout en ne pas casser les scripts existants.

CertainPerformance
la source
2

letet certaines des autres œuvres n'agissent comme des mots réservés qu'en mode strict. Les spécifications disent

Rejeté en mode strict : Ceux qui sont contextuellement comme identifiants refusé, dans le code de mode strict: let, static, implements, interface, package, private, protectedet public;

Vous pouvez voir letà l'intérieur de la liste des mots qui ne sont interdits qu'en mode strict. Si vous voulez lancer une erreur pour utiliser letcomme nom de variable, vous pouvez utiliser le mode strict

"use strict";
var let = 3

Maheer Ali
la source
0

«utiliser strictement»;

cela donnera une erreur. utilisez des outils de bundle comme webpack, grunt pour compiler votre code.

Arunesh Saxena
la source
lire la question deux fois
Manjeet Thakur