この記事では、js でのクロージャの説明と変数宣言の例 (コード) を紹介します。必要な方は参考にしてください。
クロージャ
関数Aで関数Bを宣言し、関数Bは関数Aのスコープ内の変数を使用し、関数Aは関数Bを返し(リターン)、その後関数Bを返します Aのスコープは関数の後にクロージャを形成します。 A が呼び出され、返された関数 B が存在する限り、関数 A のスコープは常に存在します
function makeFn(){ var n1 = 100; function fn(){ var n2 = 200; console.log(n1); } return fn; } var f2 = makeFn(); f2();
クロージャは、次のようなオブジェクトのプライベート プロパティを実現できます:
var obj = { name:"sunset", age:12, speak:function(){ console.log("我是"+this.name); } } console.log(obj.name);
別の例:
function makeObj(){ var name = "sunset"; var age = 12; var obj = { speak:function(){ console.log("我叫"+name); } } return obj; } console.log(obj.speak());
最後の非常に良い例例: (jQueryインポート後に確認してください)
<script> for (var i = 0; i < 10; i++) { function makeFn(index) { function fn() { console.log(index) } return fn; } var btn = makeFn(i); $("<button></button>") .text(i + 1) .appendTo(document.body) .on("click",btn) } </script>
事前に変数宣言:
jsのスコープ内では全ての変数の宣言は進みますが、代入は進みません(変数は進みません)
var a = 3; function f1(){ console.log(a); var a = 10; } f1();
は
function f1(){ var a; console.log(a); a = 10; } f1();
と同等です) 関連する推奨事項:
PHP 外部変数のクロージャ取得と変数のグローバル キーワード宣言の説明 _php の例
JavaScriptクロージャ - クロージャ内の変数とこのオブジェクト
以上がjsにおけるクロージャの説明と変数の事前宣言例(コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。