js変数のスコープ

1403 ワード

title:変数作用ドメインdate:2016-11-24 19:58 tags:javascript categories:
  • javascript
  • 静的スコープ
  • また、この法律の作用領域
  • とも言われています.
  • プログラムで定義された位置決定
  • var x = 10 ;
    function foo(){
        alert(x);
    }
    function bar(){
        var x = 20;
        foo();
    }
    
    bar()
    
    ここでfoo()関数を実行すると、その内部にxが定義されていないため、プログラムはその外層作用域(大域)を探します.
    ダイナミックスコープ
  • プログラムの実行時刻によって
  • が決定されます.
    JS変数のスコープ
  • jsは、静的作用領域
  • を使用する.
  • jsは、ブロックレベルのスコープ(グローバルスコープ、関数スコープ)
  • がない.
  • ES 5における用語環境管理静的作用領域
  • ロケーション
  • 環境記録
  • モダリティ
  • 関数宣言
  • 変数
  • 外部環境への参照(outer)
  • 環境記録の初期化-事前にグローバルコードまたは関数コードを実行する前に、まず関数宣言、変数を環境記録に定義します.
    語法環境-width
    var foo = "abc";
    width ({
        foo: "bar"
        }) {
            function f(){
                alert(foo);
            };
            (function(){
                alert(foo);
            })();
            f();
        }
    
    withはオブジェクトに入ってきました.このオブジェクトを一時的な用語環境に定義して、一時的なスコープを作成します.ここでは関数表現はこのスコープを使用します.関数宣言はまだグローバルスコープを使用しますか?
    語法環境try-catch
    try{
        var e = 10;
        throw new Error();
    }catch(e){
        function f(){
            alert(foo);
        };
        (function(){
            alert(foo);
        })();
        f();
    }
    
    catchは一時的な環境を作成します.匿名関数を実行するとこの一時的な環境が使用されます.関数宣言の環境はまだグローバル環境に向けられていますか?
    関数名付きの関数式
    (function A(){
        A = 1;
        alert(A);
        })()
    
    ここでは実行時に新しい用語環境を作成し、Aをこの環境記録に定義し、Aは修正できないので、ここでは語句A=1は効果がない.