JS閉鎖素人の知識櫛()

シンプル理解閉鎖

  はじめに:機能を実行するようなほとんどのプログラミング言語は、JSはまた、レキシカルスコープを使用して、変数のスコープに依存する関数が定義されている場合、スコープは時期を決定するためにではなく、関数呼び出しよりも、決定されます。関数オブジェクトは、関数の本体の内部は、関数の変数のスコープで維持することができ、このような特性は、コンピュータ文献呼ばれ、スコープチェーンアップによって関連付けることができる闭包(==関数の変数がスコープチェーンに隠されてもよいことを意味しますインナーラップ関数の変数)==それは見上げるようにします。


まず、コードの一部で見てみましょう:

var scope = 'global scope'  //全局变量
function checkScope(){
    var scope = 'local scope';//局部变量
    function f(){  //嵌套函数
        console.log(scope);
    };
    return f()  //返回f执行结果
};
checkScope(); //运行结果 local scope;

  このコードは、リターンF内部関数の業績はcheckScope時間を呼び出して、理解するのは簡単です。
  のは、わずかに変更された上記のコードを入れてみましょう:

var scope = 'global scope'  //全局变量
function checkScope(){
    var scope = 'local scope';//局部变量
    function f(){  //嵌套函数
        console.log(scope);
    };
    return f  //返回f执行结果
};
checkScope()(); //运行结果 local scope;

  リターンのみ関数オブジェクトであるとき、そしてcheckScope外に、この関数オブジェクトを呼び出すcheckScopeを呼び出すことで、その後、彼はローカルスコープや結果ではなく、グローバルスコープ内に返さ;
  原則:実行スコープチェーンで使用されるJS、このスコープチェーンは、ときに、関数の定義を作成しています。ネストされた関数fは、スコープチェーンに定義されている、の範囲はFを実行するために関係なく、任意の時点の、ローカル変数である必要があり、この結合は、依然としてFの実行時に有効です。(驚きに、この機能の閉鎖十分に強い、彼らはローカル変数(と引数)を取得することができ、かつ保存されています)。


QQグループに参加し、そしてそれをより輝かしい幸せ!
86

おすすめ

転載: www.cnblogs.com/7Ezreal/p/12057530.html