1. 程式人生 > >js中函式的定義有無順序的區別

js中函式的定義有無順序的區別

根據網上看的文章,小結如下:

JavaScript程式碼是從上到下順序執行的。



JavaScript解釋引擎在執行任何函式呼叫之前,首先會在全域性作用域中註冊以定義式建立的函式,然後再依次執行函式呼叫。由於註冊函式時,後定義的函式重寫了先定義的函式,因此無論呼叫語句位於何處,執行的都是後定義的函式。相反,對於宣告式建立的函式,JavaScript解釋引擎會像對待任何宣告的變數一樣,等到執行呼叫該變數的程式碼時才會對變數求值。


JS載入包含預編譯和執行兩個階段。 編譯階段會對所有的var變數和function進行掃描,並將var變數初始化為undefined型別,而function則被初始化為函式值。到了執行階段,JS從上面往下面依順序執行,遇到var變數便進行賦值(因此,在賦值之前進行呼叫的話會出現錯誤).遇到函式變數的話會從活動物件中尋找函式。


最好在頁面載入完成之後再寫程式碼。(ready)

相關文章如下:

http://qianduanblog.com/post/js-learning-16-functions-and-variables-execution-order-different-small-study.html

http://www.cnblogs.com/CBDoctor/p/3745246.html

http://blog.csdn.net/jaychouliyu/article/details/6213890

http://segmentfault.com/q/1010000002555922

http://www.jquerycn.cn/a_6598

http://www.uml.org.cn/oobject/201203213.asp