在JavaScript中,我們可以用不同的方式來撰寫函數。
Function declaration是用function這個關鍵字來宣告這個函數,就像我們宣告變數一樣。
function calcAge(birthYear) {
return 2022 - birthYear;
}
const age = calcAge(2000);
console.log(age);
// 22
而Function expression的撰寫方式並沒有function name,所以它也叫作匿名函數,基本上它就是一個表達式,表達式會產生一個值,然後將值賦予一個變數,這個變數就是函數。
呼叫的方法是一樣的:
const calcAge = function (birthYear) {
return 2022 - birthYear;
}
const age = calcAge(2000);
console.log(age);
// 22
Function declaration和expression之間最大的區別在於,我們可以在function declaration被定義之前就呼叫它,但function expression不行,這是因為變數提升(hoisting)的緣故,至於我們到底要用哪種方式撰寫函數,其實大部分是取決於個人偏好了。