Sappiamo che letè una parola chiave riservata che definisce una variabile in JavaScript.
var let = 2;
console.log(let); // return 2
Quindi perché questo non è un errore?
Sappiamo che letè una parola chiave riservata che definisce una variabile in JavaScript.
var let = 2;
console.log(let); // return 2
Quindi perché questo non è un errore?
Risposte:
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.
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, epublic;
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
'usa rigoroso';
darà un errore. usa strumenti bundle come webpack, grunt per compilare il tuo codice.