ホームページ  >  記事  >  ウェブフロントエンド  >  jsでのクロージャの使い方の詳しい説明

jsでのクロージャの使い方の詳しい説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-23 15:50:221496ブラウズ

今回は、js クロージャの使用について詳しく説明します。js クロージャを使用する際の 注意事項 は何ですか?実際のケースを見てみましょう。

クロージャー

中国語の意味は、荷物を閉じることです。

functionの範囲をパッケージとして考えると、この言葉はその役割を鮮やかに反映します。関数の通常の実行フローでは、関数内のステートメントが実行された後、プログラムは関数のスコープを自動的に破棄します。ただし、関数内で別の関数が宣言されており、親関数を参照する変数が存在する場合は、その関数のスコープが自動的に破棄されます。サブ関数が実行されると、クロージャが形成されます。これは、親関数のスコープを閉じて、プログラムが親関数を破棄するのを防ぐのと同じです。

例:

function a() {
  var name = "xuxu";
  function b() {
    console.log(name);
  }
  // 此处产生闭包 
  b();
} 
a();
クロージャは、関数がそれが配置されているスコープ チェーンを記憶してアクセスできるときに生成されます。 もちろん、ほとんどのクロージャはそれほど直感的ではありません。子関数の呼び出しは、親関数 その他、例:

function a() {
  var name = "xuxu";
  function b() {
    console.log(name);
  }
  return b;
} 
var c=a();
// 此处产生闭包 此处的c函数其实就是a函数
c();
上記のコードを通じて、クロージャの利点もわかります。つまり、グローバル スコープ (幅はここにあります) 内のローカル スコープ (関数) のスコープにアクセスします。値、これは通常の字句スコープに従って行うことはできませんが、クロージャを使用すると可能になります。次に、私たちが通常書くものをさらに見てみましょう:

function foo() {
  var a = 2;
  function baz() {
     // 2
    console.log( a ); 
  }
  bar( baz );
}
function bar(fn) {
// 大家快看呀,这就是闭包!
  fn(); 
}
または

var fn;
function foo() {
  var a = 2;
  function baz() {
    console.log( a );
  }
  // 将baz分配给全局变量
  fn = baz; 
}
function bar() {
   // 大家快看呀,这就是闭包!
  fn();
}
foo();
// 2
bar();
上記はクロージャでもあるため、サブ関数が関数内で呼び出されるか、

内部関数が何らかの手段で外部の字句関数に渡されます。スコープの場合、元の定義スコープへの参照が保持され、関数が実行されるたびにクロージャが使用されます。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

jsのスコープと事前解析の詳細な説明

HTMLを実装するためのVue列挙型

チャットルームを実装するためのnode+express

にページ数の変更 カウント中

以上がjsでのクロージャの使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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