我从功能背景来看Javascript。
我想象这样的东西来计算3的阶乘:
var Function1 =
{
(0) => 1,
(1) => 1,
(n) => n*Function1(n-1)
}
document.write(Function1(3),"<br/>")
但它没有用。
是否有类似于我在javascript中使用胖箭头表示法计算6的示例?
答案 0 :(得分:4)
您无法在JS中以描述性/声明性方式执行此操作,但您可以听取参数的值并做出相应的反应:
var Function1 = (n) => {
if (n === 0) return 1;
if (n === 1) return 1;
return Function1(n-1)*n;
}
document.write(Function1(3),"<br/>"); // 6
另一种方法是返回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
答案 1 :(得分:1)
Simplified&#34; one-line&#34;替代使用Number
构造函数:
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