瀏覽器對javascript“定義式”函數、“賦值式”函數解析順序

來源:互聯網
上載者:User
 

JavaScript是一種描述型指令碼語言,由瀏覽器進行動態解析與執行。函數的定義方式大體有以下兩種,瀏覽器對於不同的方式有不同的解析順序。

 

//“定義式”函數定義

function Fn1(){

    alert("Hello World!");

}

//“賦值式”函數定義

var Fn2 = function(){

    alert("Hello world!");

}

頁面載入過程中,瀏覽器會對頁面上或載入的每個js代碼塊(或檔案)進行掃描,如果遇到定義式函數,則進行預先處理(類似於C等的編譯),處理完成之後再開始由上至下執行;遇到賦值式函數,則只是將函數賦給一個變數,不進行預先處理,待調用到的時候才進行處理。

 

//“定義式”函數定義

Fn1();

function Fn1(){

    alert("Hello World!");

}

正常執行,彈出“Hello World!”,瀏覽器對Fn1進行了預先處理,再從Fn1();開始執行。

//“賦值式”函數定義

Fn2();

var Fn2 = function(){

    alert("Hello world!");

}

Firebug報錯:Fn2 is not a function,瀏覽器未對Fn2進行預先處理,依序執行,所以報錯Fn2未定義。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.