天天看點

7.1函數表達式的特征及遞歸(JavaScript進階程式設計總結)

定義函數

函數聲明

函數聲明提升,可以把函數聲明放在調用它的語句後面

函數表達式

建立的函數為匿名函數

函數聲明與函數表達式之間的差別

let sayHello; // 如需動态定義,必須使用函數表達式
if (true) {
  sayHello = () => {
    console.log('hello')
  }
} else {
  sayHello = () => {
    console.log('hi')
  }
}
           

遞歸

arguments.callee 指向正在執行的函數的指針,不應該使用函數名

嚴格模式下arguments.callee會導緻錯誤

function factorial(num) {
  if (num <= 1) {
    return 1
  } else {
    return num * arguments.callee(num - 1);
  }
}
           

或者使用命名函數

const factorial = (function f(num) {
  if (num <= 1) {
    return 1
  } else {
    return num * f(num - 1);
  }
})
           

繼續閱讀