函式宣告和函式表示式之間的區別
阿新 • • 發佈:2019-01-01
函式表示式是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
收藏一下
定義函式的方式有兩種
//指定函式名的方式
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
收藏一下