Wir wissen, dass dies let
ein reserviertes Schlüsselwort ist, das eine Variable in JavaScript definiert.
var let = 2;
console.log(let); // return 2
Warum ist das kein Fehler?
javascript
Md. Tahazzot
quelle
quelle
Antworten:
let
ist nur ein reserviertes Wort im strengen Modus:Dies liegt daran, dass Browser in der Regel vor allem die Abwärtskompatibilität priorisieren . Obwohl
let
es in ES2015 eingeführt wurde (und seine Verwendung war schon vorher vorgesehen),let
würden frühere Skripte, die als Variablenname verwendet wurden, weiterhin wie gewünscht funktionieren. Wenn Ihr Skript beispielsweise 2008 geschrieben wurde:Dann würde es auch 2020 weiter funktionieren.
Aus sehr ähnlichen Gründen
async
undawait
sind auch als Variablennamen zulässig .Warum die Verwendung von
let
Fehlern im strengen Modus - im strengen Modus - 2009 in ES5 eingeführt wurde. Damals sahen die Sprachdesigner, dass die Verwendung neuer Schlüsselwörter zum Deklarieren von Variablen in Zukunft möglich war, aber nicht Noch nicht in Stein gemeißelt, und ES6 war noch weit entfernt. Sobald ES5 herauskam, konnten sich Skriptschreiber für den strengen Modus entscheiden, um den Code weniger verwirrend zu machen und stille Fehler in explizite Fehler umzuwandeln. Obwohllet
es für die Variablendeklaration noch nicht verwendbar war , verbesserte das Verbot als Variablenname im strengen Modus die Lesbarkeit zukünftiger Skripte, die sich für den strengen Modus entschieden hatten, ohne dass vorhandene Skripte beschädigt wurden.quelle
let
und einige der anderen Werke fungieren nur im strengen Modus als reservierte Wörter. Die Spezifikationen sagenSie können
let
in der Liste der Wörter sehen, die nur im strengen Modus nicht erlaubt sind. Wenn Sie einen Fehler für die Verwendunglet
als Variablenname auslösen möchten, können Sie den strengen Modus verwendenquelle
'use strict';
es wird ein Fehler ausgegeben. Verwenden Sie Bundle-Tools wie Webpack und Grunzen, um Ihren Code zu kompilieren.
quelle