標籤:image 拆分 範圍 就會 strong func fun ever 作用
聲明提升: function > var > other
var提升的時候,只是聲明提升,但是賦值還是會在原來的位置。
Javascript Hoisting:In javascript, every variable declaration is hoisted to the top of its declaration context.我的理解就是在Javascript語言中,變數的聲明(注意不包含變數初始化)會被提升(置頂)到聲明所在的上下文,也就是說,在變數的範圍內,不管變數在何處聲明,都會被提升到範圍的頂部,但是變數初始化的順序不變。
1. a=1;var a=0; // var提前(var的時候賦值就會拆分成賦值在原位,var聲明提前),相當於var a;a=1;a=0,最後a==0;
2. var a=1;var a=0; // var都提前&後面的賦值覆蓋前面的賦值,相當於var a;var a;a=1;a=0;, 然後a==0;
3. var a = 0;function a(){} // function比var更提前,相當於function a(){};var a = 0;, 然後後面var覆蓋了前面的function, 然後a==0; 所以這裡如果a()就會報錯不存在這個方法.
4. function a(){alert(1)}; function a(){alert(2)} // 後面的function會覆蓋前面的function,所以a()會彈出2
5. a=0; function a(){};var a=1; // 相當於 function a(){}; var a; a=0; a=1 , 最後a==1;
// 不知道要在哪裡用function的時候不要用var來聲明函數,除非全部var都寫到最前面,但是不建議.
// 請盡量使用function關鍵字來聲明函數;
6. a();function a(){alert(1);} // 相當於function a(){alert(1);};a();會彈出1
7. a();var a=function(){alert(2)}; //相當於var a; a(); a=function(){alert(2)}; 就會報錯 a is not a function;
8. 提升是提升讓變數在範圍置頂
JavaScript基本概念(1)-聲明提升