Heim > Web-Frontend > js-Tutorial > Hauptteil

Verständnis von let- und var-Beispielen in Javascript MDN

黄舟
Freigeben: 2017-03-20 14:37:26
Original
1634 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Sie sehen, dass wir nicht direkt auf privateScope.hiddenProperty zugreifen können, wenn wir es so ändern.

var privateScope = {}; // 把let 换成var
Nach dem Login kopieren

dann wird das Ergebnis zu

console.log(privateScope.hiddenProperty); //ReferenceError: privateScope is not defined
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!