ホームページ > ウェブフロントエンド > jsチュートリアル > jsにおけるクロージャの説明と変数の事前宣言例(コード)

jsにおけるクロージャの説明と変数の事前宣言例(コード)

不言
リリース: 2018-08-15 16:28:18
オリジナル
1561 人が閲覧しました

この記事では、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 の例

JS変数宣言の詳しい説明

JavaScriptクロージャ - クロージャ内の変数とこのオブジェクト

以上がjsにおけるクロージャの説明と変数の事前宣言例(コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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