JavaScriptクロージャー

Barbara Streisand
リリース: 2025-01-29 22:37:10
オリジナル
214 人が閲覧しました

JavaScript Closures

JavaScriptの閉鎖は、JavaScriptの強力で重要な概念です。関数を指します。外部(閉じた)関数が実行された後でも、外部関数の変数にアクセスできます。閉鎖は、JavaScriptの範囲と機能プログラミングの重要なコンポーネントです。

閉鎖の実用的な原則

関数が別の関数内で定義されている場合、内部関数は外部関数の変数とパラメーターにアクセスできます。外部関数が実行された後でも、内部関数はこれらの変数のアクセス許可を保持します。この動作は閉鎖と呼ばれます。

閉鎖の例

この例では、

1

2

3

4

5

6

7

8

9

10

11

12

function 外部函数() {

    let 外部变量 = '我来自外部作用域';

 

    function 内部函数() {

        console.log(外部变量); // 内部函数可以访问外部变量

    }

 

    return 内部函数;

}

 

const 闭包示例 = 外部函数();

闭包示例(); // 输出: "我来自外部作用域"

ログイン後にコピー

<一>は閉鎖です。これは、実行が完了した後でも

のアクセスを保持しているためです。 内部函数 外部函数閉鎖の実際のアプリケーション外部变量

<隐>データプライバシー

:閉鎖を使用してプライベート変数を作成できます。これらの変数は、特定の機能によってのみアクセスできます。
  1. <调>コールバック関数
:閉じているのは、イベント処理プログラムやAJAXコールなどの非同期プログラミングに広く使用されています。

1

2

3

4

5

6

7

8

9

10

11

12

function 创建计数器() {

    let 计数 = 0;

    return function() {

        计数++;

        return 计数;

    };

}

 

const 计数器 = 创建计数器();

console.log(计数器()); // 输出: 1

console.log(计数器()); // 输出: 2

console.log(计数器()); // 输出: 3

ログイン後にコピー
  1. <柯>corrihua :関数Corrihuaの閉じて、関数の1つはいくつかのパラメーターで別の関数を返します。

1

2

3

setTimeout(function() {

    console.log('这是一个使用闭包的回调函数');

}, 1000);

ログイン後にコピー
    閉鎖の利点
  1. <用>コントロールドメイン制御
  2. :閉鎖は、変数の範囲を制御して、グローバルな範囲を汚染しないようにするのに役立ちます。

1

2

3

4

5

6

7

8

function 乘法(a) {

    return function(b) {

        return a * b;

    };

}

 

const 乘以二 = 乘法(2);

console.log(乘以二(5)); // 输出: 10

ログイン後にコピー
メモリ効率

:閉鎖により、特定の変数のアクセス許可を保持して、グローバル変数を作成せずにメモリを効果的に使用できるようになります。

  • 閉じるための注意
  • メモリリーク
  • :適切に使用されていない場合、閉鎖はメモリリークを引き起こす可能性があります。これは、外部変数への参照を保持し、ゴミリサイクルを防ぐ可能性があるためです。 パフォーマンスオーバーヘッド
  • :使用過剰閉鎖は、メモリ消費の増加によりパフォーマンスの問題を引き起こす可能性があります。

現実世界の例:プライベート変数

    この例では、
  • 変数はプライベートであり、閉鎖によって提供される方法を介してのみアクセスまたは変更できます。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート