在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ JavaScript Function類型aguments的一點疑惑

JavaScript Function類型aguments的一點疑惑

1.上圖:

clipboard.png

clipboard.png

為了降低函數(shù)中的耦合度,我采用了arguments.callee指向當(dāng)前函數(shù)。
這里的 return num*arguments.callee(num-1) 等價于 return num*factorial(num-1)
好處是無論引用函數(shù)時使用的是什么名字都可以保證正常完成調(diào)用。
我為了測試是否真的如此,就把factorial函數(shù)給重寫了返回0;
問題來了:當(dāng)使用表達式把一個函數(shù)賦值factorial變量時確實成功了:一個函數(shù)返回0,另一個函數(shù)返回120;
當(dāng)使用函數(shù)聲明的方式定義factorial函數(shù)同樣返回0時,卻兩個函數(shù)都返回0;
函數(shù)表達式和函數(shù)聲明的問題還是其他問題?

回答
編輯回答
過客

函數(shù)聲明提前的鍋

2017年8月31日 17:43
編輯回答
單眼皮

因為函數(shù)聲明會被提前

你以為是這樣的:

function factorial (num) {
  if (num <= 1) 
  // ...
}
var factorial_1 = factorial;

function factorial (num) {
  return 0
}

其實是這樣的

function factorial (num) {
  if (num <= 1) 
  // ...
}

function factorial (num) {
  return 0
}

var factorial_1 = factorial;
2017年10月25日 17:06