ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の let と var の例についての理解 MDN

JavaScript の let と var の例についての理解 MDN

黄舟
黄舟オリジナル
2017-03-20 14:37:261629ブラウズ

これは javascript MDN の例です
目的は、let スコープの問題を説明することです。

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

しかし、通常はこのように コンストラクター を定義しません。
ということで書き直しました。

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

このように変更すると、privateScope.hiddenProperty に直接アクセスできないことがわかります。

var privateScope = {}; // 把let 换成var

結果は

console.log(privateScope.hiddenProperty); //ReferenceError: privateScope is not defined

となり、結果が変わっていないことがわかります。
コンストラクターでは、var であっても let であっても、そのスコープは同じであり、それらはすべてプライベート 変数 です。

まだ MDN の例を使用しており、let を var

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
に変更します

console.log にエラーの代わりに結果が出力されていることがわかります。

しかし、一般的には、依然として一般的なパターンを使用してコンストラクターを定義しています。この例は、特に let と var の違いを説明するために書かれています。したがって代表的ではありません。
一般的に使用されるモードでは、let と var に違いはありません。どちらもコンストラクターのプライベート変数であり、スコープは同じです。

以上がJavaScript の let と var の例についての理解 MDNの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。