JS-函式宣告與函式表示式的區別
阿新 • • 發佈:2019-01-07
定義:
1 函式宣告:function foo(){}
2 函式表示式: var bar=function foo(){}
區別:
1 函式宣告會在任何表示式被解析和求值之前先行被解析和求值。即使宣告位於原始碼中的最後一行,它也會先於同一作用域中位於最前面的表示式被求值。
2 函式表示式在遇到的時候才運算。
特點:
1 通過條件語句控制函式宣告的行為並未標準化,因此不同環境下可能會得到不同的結果。
如:(不能這樣使用)
if (true) {
function foo() {
return 'first';
}
}
else {
function foo() {
return 'second';
}
}
foo();
所以: 函式宣告只能出現在Program(程式)或FunctionBody(函式體)內。不能出現在Block(塊)({ … })中,例如不能出現在 if、while 或 for 語句中。因為 Block(塊) 中只能包含Statement(語句)。