分享

[筆記]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);
預解析 
   第一行 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); 
預解析 
   第一行 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       
分類:學習

評論
上一篇
  • 下一篇
  • 更多文章
    載入中... 沒有更多了