鍍金池/ 問答/C++  HTML/ 怎樣定義遞歸函數,即使名字變了也可以用?

怎樣定義遞歸函數,即使名字變了也可以用?

"use strict";

// 將這個方法賦值給另一個變量
var digui2 = digui;
// 置空之前的變量
digui = null;

digui2(10); // 就報錯了

function digui(num) {
  if (num < 2) {
    return 1;
  } else {
    return num * digui(num - 1);
  }
}

我知道可以用 arguments.callee 來代替函數名,但問題是我們的項目處于嚴格模式。
嚴格模式下不能使用 arguments.callee 。
有沒有其它的方法?

回答
編輯回答
澐染

可以考慮下面這種方式,而非直接聲明式~

var digui = function f(num) {
  if (num < 2) {
    return 1;
  } else {
    return num * f(num - 1);
  }
}
var digui2 = digui;
// 置空之前的變量
digui = null;

console.log(digui2(10));
2018年1月27日 09:42