【JavaScript】什麼是函式
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
是匿名函式,
所以黑色游標指的地方並不會有名稱。
🚩 不是所有的函式表達式都是匿名函式
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));