Perché una parola chiave riservata JavaScript è consentita come nome variabile?


Risposte:


25

let è solo una parola riservata in modalità rigorosa:

'use strict';
var let = 5;

Uncaught SyntaxError: parola riservata inaspettata in modalità rigorosa

Questo perché i browser in genere danno priorità alla compatibilità con le versioni precedenti rispetto a tutte le altre. Sebbene sia letstato introdotto in ES2015 (e il suo uso era previsto qualche tempo prima di allora), gli script precedenti che utilizzavano letcome nome di variabile continuavano a funzionare come desiderato. Ad esempio, se il tuo script è stato scritto nel 2008:

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

Quindi continuerebbe a funzionare anche nel 2020.

Per ragioni molto simili, asynce awaitsono anche consentiti come nomi di variabili .

Per quanto riguarda il motivo per cui l'uso di leterrori in modalità rigorosa - la modalità rigorosa è stata introdotta in ES5, nel 2009. All'epoca, i progettisti del linguaggio hanno visto che l'uso di nuove parole chiave per dichiarare le variabili era una possibilità in futuro, ma non lo era è ancora incastonato nella pietra ed ES6 era ancora molto lontano. Una volta uscito ES5, gli autori di script potevano attivare la modalità rigorosa per rendere il codice meno confuso e modificare gli errori silenziosi in errori espliciti. Anche se letnon era utilizzabile per dichiarazione di variabile ancora , che vieta come un nome di variabile in modalità rigorosa migliorato la leggibilità dei futuri script, che è stata attivata la modalità rigorosa, ma anche di non rompere gli script esistenti.


2

lete alcune delle altre opere agiscono come parole riservate solo in modalità rigorosa. Le specifiche dicono

Non consentito in modalità rigorosa : Quelli che sono contestualmente annullato come identificatori, nel rigoroso codice di modalità: let, static, implements, interface, package, private, protected, e public;

Puoi vedere letall'interno dell'elenco di parole che non sono consentite solo in modalità rigorosa. Se si desidera generare un errore per l'utilizzo letcome nome variabile, è possibile utilizzare la modalità rigorosa

"use strict";
var let = 3


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.