Warum ist ein reserviertes JavaScript-Schlüsselwort als Variablenname zulässig?

Antworten:

25

let ist nur ein reserviertes Wort im strengen Modus:

'use strict';
var let = 5;

Ungefangener SyntaxError: Unerwartetes reserviertes Wort im strengen Modus

Dies liegt daran, dass Browser in der Regel vor allem die Abwärtskompatibilität priorisieren . Obwohl letes in ES2015 eingeführt wurde (und seine Verwendung war schon vorher vorgesehen), letwürden frühere Skripte, die als Variablenname verwendet wurden, weiterhin wie gewünscht funktionieren. Wenn Ihr Skript beispielsweise 2008 geschrieben wurde:

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

Dann würde es auch 2020 weiter funktionieren.

Aus sehr ähnlichen Gründen asyncund awaitsind auch als Variablennamen zulässig .

Warum die Verwendung von letFehlern 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. Obwohl letes 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.

Bestimmte Leistung
quelle
2

letund einige der anderen Werke fungieren nur im strengen Modus als reservierte Wörter. Die Spezifikationen sagen

Unzulässige im strikten Modus : Diejenigen , die als Bezeichner kontextuell nicht zugelassen werden, im Strict - Modus - Code: let, static, implements, interface, package, private, protected, und public;

Sie können letin der Liste der Wörter sehen, die nur im strengen Modus nicht erlaubt sind. Wenn Sie einen Fehler für die Verwendung letals Variablenname auslösen möchten, können Sie den strengen Modus verwenden

"use strict";
var let = 3

Maheer Ali
quelle
0

'use strict';

es wird ein Fehler ausgegeben. Verwenden Sie Bundle-Tools wie Webpack und Grunzen, um Ihren Code zu kompilieren.

Arunesh Saxena
quelle
Lesen Sie die Frage zweimal
Manjeet Thakur