如何在 javascript 中构建具有多个粗箭头子句的函数?

How to build a function with multiple fat arrows clauses in javascript?

我来自职能背景Javascript。

我想像这样计算 3 的阶乘:

var Function1 =    
{
  (0) => 1,
  (1) => 1,
  (n) => n*Function1(n-1)
}

document.write(Function1(3),"<br/>")

但是没用。

是否有类似于我在 javascript 中使用 fat arrow 符号计算 6 的示例?

你不能用JS中的descriptive/declarative方式来做,但是你可以监听参数的值并做出相应的反应:

var Function1 = (n) => {
  if (n === 0) return 1;
  if (n === 1) return 1;
  return Function1(n-1)*n;
}
document.write(Function1(3),"<br/>"); // 6

另一种方法是 return a curried function:

var Function1 = (n) => {
  if (n === 0) return () => 1;
  if (n === 1) return () => 1;
  return () => Function1(n-1)()*n;
}
document.write(Function1(3)(),"<br/>"); // 6

注意这里的第二个函数调用Function1(3)()

您的示例可以使用三元运算符缩短一点,但这不利于可维护性和可读性:

var Function1 = (n) => [0, 1].includes(n) ? 1 : Function1(n-1)*n;
document.write(Function1(3),"<br/>"); // 6

使用 Number 构造函数的简化 "one-line" 替代方案:

var Function1 = (n) => { return Number(n === 0 || n === 1) || Function1(n-1)*n; };

console.log(Function1(0));  // 1
console.log(Function1(1));  // 1
console.log(Function1(4));  // 24