如何在 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
我来自职能背景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