[筆記]JS 作用域&預解析
預解析
1. 所有變數 在程式真正運行前 都是非賦值2. 所有函數在真正運行前都是整個函數塊
3. 預到重名 只留下一個;變數和函數名 只留下函數
逐行解析
* 表達式: = + - * /備註
1.函數也是一個作用域
2.函數中局部優先
預解析
第一行 var a;
第二行 fn1 =function
逐行解析
第一行 a=1;
第六行 函式調用
預解析: 無
逐行解析:
第3行:alert(a)
第4行: a=2;
第七行: alert(a);
1: var a=1;
2: function fn1(){
3: alert(a);
4: a=2;
5: }
6: fn1();
7: alert(a);
************************
1: var a=1;
2: function fn1(){
3: alert(a);
4: var a=2;
5: }
6: fn1();
7: alert(a);
2: function fn1(){
3: alert(a);
4: var a=2;
5: }
6: fn1();
7: alert(a);
預解析
第一行 var a;
第二行 fn1 =function(){..}
逐行解析
第一行 a=1;
第六行 函式調用
預解析:
第四行: var a //局部變量
逐行解析: 第3行:alert(a) //局部優先 輸出undefinrd
第4行: a=2;
第七行: alert(a); // 輸出1 全局變數
第一行 var a;
第二行 fn1 =function(){..}
逐行解析
第一行 a=1;
第六行 函式調用
預解析:
第四行: var a //局部變量
逐行解析: 第3行:alert(a) //局部優先 輸出undefinrd
第4行: a=2;
第七行: alert(a); // 輸出1 全局變數
************************
1: var a=1;
2: function fn1(a){
3: alert(a);
4: a=2;
5: }
6: fn1();
7: alert(a);
2: function fn1(a){
3: alert(a);
4: a=2;
5: }
6: fn1();
7: alert(a);
預解析
第一行 var a;
第二行 fn1 =function(){..}
逐行解析
第一行 a=1;
第六行 函式調用
預解析:
第二行: var a 函數()內 //局部變量
逐行解析:
第3行:alert(a) //局部優先 輸出undefinrd
第4行: a=2;
第七行: alert(a); // 輸出1 全局變數
************************
1: alert(a);
2: var a= 1
3: function a(){
4: alert("1-----函數a");
5: }
6: alert(a)
7:var a=3;
8:alert(a);
9: function a(){
10: alert("2----函數a");
11:}
12:alert(a)
預解析
第二行 var a
第三行 function a
第七行 vat a =3;
第九行 function a
// 只留函數
逐行執行
第一行 alert(a); 輸出 function a(){alert("2---函數a")}
第二行 a=1
第六行 alert(a) 輸出1
第七行 a=3
第八行 alert(a) 輸出3
第十二行 alert (a) 輸出3
留言
張貼留言