JavaScript基本概念(1)-聲明提升

來源:互聯網
上載者:User

標籤: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)-聲明提升

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.