ホームページ  >  記事  >  ウェブフロントエンド  >  jsクロージャーとは何ですか? jsクロージャを理解する

jsクロージャーとは何ですか? jsクロージャを理解する

不言
不言オリジナル
2018-09-01 15:56:552621ブラウズ

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 でのクロージャの使用方法の詳細な説明

js クロージャを 1 分で理解する_javascript スキル

js でクロージャを理解する方法

以上がjsクロージャーとは何ですか? jsクロージャを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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