[筆記]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      

















留言

這個網誌中的熱門文章

[筆記]JS 對HTML 操作

[筆記]JS Button 事件