Heim > Artikel > Web-Frontend > Verständnis von let- und var-Beispielen in Javascript MDN
Dies ist ein Beispiel für Javascript MDN
Der Zweck besteht darin, das Problem des let-Bereichs zu veranschaulichen.
var SomeConstructor;{ let privateScope = {}; SomeConstructor = function SomeConstructor () { this.someProperty = "foo"; privateScope.hiddenProperty = "bar"; } SomeConstructor.prototype.showPublic = function () { console.log(this.someProperty); // foo } SomeConstructor.prototype.showPrivate = function () { console.log(privateScope.hiddenProperty); // bar }} var myInstance = new SomeConstructor(); myInstance.showPublic();myInstance.showPrivate(); console.log(privateScope.hiddenProperty); // error
Aber normalerweise definieren wir keinen Konstruktor wie diesen.
Also habe ich es umgeschrieben.
function SomeConstructor() { this.someProperty = 'foo'; let privateScope = {}; privateScope.hiddenProperty = 'bar'; SomeConstructor.prototype.showPublic = function () { console.log(this.someProperty); } SomeConstructor.prototype.showPrivate = function () { console.log(privateScope.hiddenProperty); }}var myInstance = new SomeConstructor(); myInstance.showPublic(); //foomyInstance.showPrivate(); //barconsole.log(privateScope.hiddenProperty); //ReferenceError: privateScope is not defined
Sie sehen, dass wir nicht direkt auf privateScope.hiddenProperty zugreifen können, wenn wir es so ändern.
var privateScope = {}; // 把let 换成var
dann wird das Ergebnis zu
console.log(privateScope.hiddenProperty); //ReferenceError: privateScope is not defined
und Sie können sehen, dass das Ergebnis unverändert bleibt.
Im Konstruktor ist der Umfang unabhängig davon, ob es sich um var oder let handelt, derselbe und es handelt sich bei allen um private Variablen.
Wir verwenden immer noch das Beispiel in MDN.
var SomeConstructor;{ var privateScope = {}; SomeConstructor = function SomeConstructor () { this.someProperty = "foo"; privateScope.hiddenProperty = "bar"; } SomeConstructor.prototype.showPublic = function () { console.log(this.someProperty); // foo } SomeConstructor.prototype.showPrivate = function () { console.log(privateScope.hiddenProperty); // bar }} var myInstance = new SomeConstructor(); myInstance.showPublic(); myInstance.showPrivate(); console.log(privateScope.hiddenProperty); // bar
und Sie können sehen, dass console.log Ergebnisse anstelle von Fehlern ausgibt.
Aber im Allgemeinen verwenden wir immer noch gängige Muster, um einen Konstruktor zu definieren. Dieses Beispiel wurde speziell geschrieben, um den Unterschied zwischen let und var zu erklären. Es ist also nicht repräsentativ.
Im häufig verwendeten Modus gibt es keinen Unterschied zwischen let und var. Sie sind beide private Variablen des Konstruktors und haben den gleichen Gültigkeitsbereich.
Das obige ist der detaillierte Inhalt vonVerständnis von let- und var-Beispielen in Javascript MDN. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!