レキシカルスコープと動的スコープ
1、範囲:
スコープは、プログラムコードで定義された変数の領域を指します
JavaScriptは静的なスコープですレキシカルスコープを使用しています
2、字句スコープとダイナミックスコーピング
JavaScriptはレキシカルスコープを使用しているので、関数のスコープは関数が決定に定義されている場合。
対応する語彙のスコープと動的スコープ、関数を決定する前に呼び出される関数の範囲です。ダイナミックスコープと機能範囲がどのように、どこ文が宣言さに関係していない、彼らだけから呼び出すところを気に。換言すれば、スコープチェーンは、コールスタックではなく、コードネストスコープに基づいています。
VaRの値= 1 。 関数FOO(){ にconsole.log(値)。 } 関数バー(){ VARの値= 2 。 FOO(); } バー()。 // 结果是?
JavaScriptはその静的スコープ、実装プロセスの分析を想定しています。
実行のfoo()関数、FOO関数値内の最初の外観がローカル変数であり、そうでない場合ならば、筆記層上の位置コードを見つけるためには、即ちので印刷結果こと、値1に等しいです。
JavaScriptが想定される動的スコープという、実装プロセスの分析:
実行のfoo()関数は、ローカル変数の値がある場合、関数foo内から見つけることはまだある、そうでない場合は、関数呼び出しの範囲からバーの内側()関数は、値変数を見つけるために、その結果が2を印刷しますです。
既に述べたように、JavaScriptはレキシカルスコープを使用し、これは結果の一例です
参考記事:HTTPS://www.cnblogs.com/xiaohuochai/p/5700095.html