1. 程式人生 > >JS-函式宣告與函式表示式的區別

JS-函式宣告與函式表示式的區別

定義:

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(語句)。