ホームページ >ウェブフロントエンド >jsチュートリアル >jsクロージャーとは何ですか? jsクロージャを理解する
jsのクロージャとは何ですか? クロージャーの概念に初めて触れた人にとっては、理解できない人も多いと思います。次の記事で js クロージャー を理解する方法を説明します。
クロージャ(closure)はjsの難しさであり、多くの高度なアプリケーションがクロージャに依存していることの特徴でもあります。それでは、まず js クロージャの概念を見てみましょう。
閉鎖とは何ですか?
公式の説明によると、いわゆるクロージャは、多くの変数とこれらの変数にバインドされた環境を持つ式 (通常は関数) を指します。そのため、これらの変数も式の一部です。
この概念だけを見ると、多くの友人は理解するのが難しいと思うので、結局のところ、このステートメントはあまりにも「公式」すぎるため、js クロージャを理解する方法について話しましょう。 js クロージャーとは何かをより明確に理解できるようにします。
js クロージャーの理解
まず例を見てみましょう:
def foo() { var a = 1; def bar() { a = a + 1; alert(a); } return bar; } var closure = foo(); // 这个时候返回的是 bar() 这个函数外加其包上的变量 a; var closure2 = foo(); // 这里同样生成了另外一个闭包(实例) closure(); // 2 closure2(); // 2 , 绑定了另外一份变量 a closure(); // 3
この例から次のことがわかります:
通常の foo() メソッドの場合、その内部に変数 a が存在する必要があります。 foo() メソッドが実行されますが、 foo() メソッドは新しい square bar() を返し、このメソッドは foo() メソッドの変数 a にアクセスします (JavaScript は Scope Chain を介して親プロパティにアクセスします)、およびメソッドの存在bar() は、独自のスコープ内の変数 a を閉じるのと同様に、メソッド bar() が期限切れにならない限り、変数 a は常にメソッド bar() に付随し、変数 a の存在を延長します。そしてメソッド bar() はクロージャと呼ばれます。
上記の例から、js クロージャについての理解をもう一度要約できますか?
クロージャは関数によって作成された字句スコープであり、その中で作成された変数は参照された後、この字句環境の外で自由に使用できます。
クロージャは通常、内部変数を作成するために使用されます。これにより、これらの変数は外部から自由に変更できなくなり、指定された関数インターフェイスを通じて操作できるようになります。
これで、js クロージャについてより明確に理解できました。まだ理解できない場合は、PHP 中国語 Web サイトの JavaScript ビデオ チュートリアル のコラムを参照してください。
関連する推奨事項:
js クロージャを 1 分で理解する_javascript スキル
以上がjsクロージャーとは何ですか? jsクロージャを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。