の範囲を理解する方法

  1. JSないブロックレベルのスコープ
  2. 唯一のグローバルスコープの機能を飲みます

これは、いくつかのスコープに分かれています

  1. 無料変数
  2. 自由変数を見つけるために、あるスコープチェーン、
  3. 2つのシーンの閉鎖

無料変数

1つの VARの名前= 'zhangsan'
 2はconsole.log(名)// zhangsan 
3  VARの NUM = 100
 4  関数T(){
 5      のvar NUM = 200
 6      にconsole.log(NUM)// 200 
7  }
 8 T()

自由変数を見つけるために、あるスコープチェーン、

// スコープチェーン(連続変数を見つけるために親)
VaRの SD = 22である
 関数FG(){
     VARの S2 = 666
     // この変数が定義されていない範囲、すなわち、自由変数 
    にconsole.log(S2)// 666 
    console.log(SD)// 22である
} 
FG()
するvar W = 123
 関数W1(){
     VARの V = 568
     関数のW2(){
         VARの C = 300
         // 親は次のように探し続けるません 
        はconsole.log(W )// 123 
        はconsole.log(V)// 568 
        はconsole.log(C)// 300
    } 
    W2()
} 
W1()

2つのシーンの閉鎖

1つの // クロージャ
2  // 戻り値として機能する
3  // 2、引数として機能する
。4  
。5  関数SS(){
 6      のvar E = 888
 。7      戻り 関数(){
 8          にconsole.log(E)   / / 888 //自由変数、すなわち、SS機能は彼の親スコープ内にあります
。9      }
 10  }
 11  
12である のvar S1 = SS()
 13である VaRの E = 999
 14  S1()
 15  
16  関数A1(){
 17      のvar W 543 =
 18      のリターン 関数(){
 19          にconsole.log(W)   // 543 //自由変数、彼の親スコープすなわちSS機能を見つける
20      }
 21である }
 22は、 VaRの Z = A1()
 23は、 関数A2(PARM){
 24      VaRの W = 900
 25      PARM()
 26である }
 27 A2(Z)

 

おすすめ

転載: www.cnblogs.com/chailuG/p/11260102.html