ホームページ > 記事 > ウェブフロントエンド > JavaScript の let と var の例についての理解 MDN
これは 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 サイトの他の関連記事を参照してください。