【JavaScript】什麼是函式

Neptune Li
Li-NInja
Published in
Nov 8, 2020

🚩 前言

【JavaScript】陳述式與表達式
有帶過 函式陳述式(具名函式) 以及 函式表達式(匿名函式),
這邊在更深入的紀錄兩者的差異,以及第三個情形。

🚩 函式陳述式 function statement

只做行動不立即產生結果。

function functionA() {
console.log('函式陳述式', '具名函式');
console.log(functionA);
}
functionA();

🚩 函式表達式 function expression

有一個變數來接收 function 。

let functionB = function() {
console.log('函式表達式', '匿名函式');
console.log(functionB);
}
functionB();

結果顯示出來,因為 functionB 是匿名函式,
所以黑色游標指的地方並不會有名稱。

圖片引用自六角學院: https://www.hexschool.com/

🚩 不是所有的函式表達式都是匿名函式

let functionC = function functionD() {
console.log(functionC, functionD);
// 具名函式能夠在函式內被調用
}
functionC();
console.log(functionC);
console.log(functionD);//會報錯,因為找不到

函式表達式可以也具名,
但這個具名函式只能夠在 functionC 內使用,
如果 console.log(functionD) 寫在外面就會錯誤,
因為在 window 物件下並沒有 functionD
這邊是屬於範圍鏈的概念。

這邊提供一個上面的函式範例,效果如同遞迴。

let num = 1;
let giveMeMoney = function giveMoreMoney(coin) {
num += 1;
console.log('執行 giveMeMoney', num, coin);
return coin > 100 ? coin : giveMoreMoney(num * coin);
};
console.log(giveMeMoney(30));

--

--