js提升机制 (Hoisting)

Hoisting指的是js在编译阶段会将变量和函数声明放入内存中,不改变编码中键入的位置

 

1   变量提升(提升的只是声明,赋值并不会提升)

     (1) 正常情况    

         alert(test);     //报错

  (2) 变量提升

           alert(test);    // undefined,因为提升的只是函数的声明

         var  test = 3; 

2    函数提升

 

    (1)

     test();              //abc

     function test(){

        console.log("abc");

     }

 

    (2)

     test1();   // test1 is not function,提升只是test1的声明,这等价于先声明一个变量,再把一个函数赋给该变量

     var test1 = function(){                                           var  test1 = function ab(){           //这种情况函数ab并不存在  

        console.log("abc");                  或                                 console.log("abc");                

  }                      }          

 

posted @ 2017-06-27 23:15  Story.and.Wine  阅读(271)  评论(0)    收藏  举报