- JSないブロックレベルのスコープ
- 唯一のグローバルスコープの機能を飲みます
これは、いくつかのスコープに分かれています
- 無料変数
- 自由変数を見つけるために、あるスコープチェーン、
- 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)