1. 程式人生 > >函式宣告和函式表示式之間的區別

函式宣告和函式表示式之間的區別

 函式表示式是javascript中的一個既強大容易令人困惑的特性           《javascript高階程式設計》

定義函式的方式有兩種

//指定函式名的方式
1.function  sayHi(){
}

以上的函式宣告方式一個重要的特徵就是函式宣告提升,意思是在執行程式碼之前會先讀取函式宣告,意味著可以把函式宣告放在呼叫他的語句後面
即:
sayHi();
function  sayHi(){
}

//表示式方式 
2. var sayHi=function(){
}

函式表示式和其他表示式一樣,在使用前必須對其進行賦值
 var sayHi=function(){
}
sayHi(); 


函式宣告的實際規則如下:

函式宣告只能出現在程式或函式體內。從句法上講,它們 不能出現在Block(塊)({ ... })中,例如不能出現在 if、while 或 for 語句中。因為 Block(塊) 中只能包含Statement語句, 而不能包含函式宣告這樣的源元素。另一方面,仔細看一看規則也會發現,唯一可能讓表示式出現在Block(塊)中情形,就是讓它作為表示式語句的一部分。但是,規範明確規定了表示式語句不能以關鍵字function開頭。而這實際上就是說,函式表示式同樣也不能出現在Statement語句或Block(塊)中(因為Block(塊)就是由Statement語句構成的)。

百度了很多關於函式宣告和函式表示式區別的文章 感覺這篇寫的最好
http://www.nowamagic.net/librarys/veda/detail/1630
收藏一下