我在作业中得到了这个定义,我无法完全弄清楚它是如何运作的以及它的作用。
这是一种撰写语法吗?
f
是一般功能,没有具体的定义。
主要是我不明白什么是x
。
const invokeN1 = (f, n) =>
n === 0 ? (x) => x : (x) => f(invokeN1(f,n-1)(x))
答案 0 :(得分:2)
你在这里给出的是一个调用模式/回调。 invokeN1(func,n-1)
将返回一个变量的函数。
分解:
(f,n)=>whatever
这意味着invokeN1将是一个接受两个变量的函数,结果由'whatever'决定。我们来看看:
n===0?
检查invokeN1
的第二个参数 - 它需要具有与0相同的类型和值。现在,如果它为0则返回:
(x) => x
这是返回的内容 - 另一种调用模式!
这表示返回相同参数的1参数的函数。请注意,(x)
是此处的函数签名,x
是将返回的内容。
如果n
不是0,该怎么办?
(x) => f(invokeN1(f,n-1)(x))
另一个调用模式 - 同样,一个接受单个参数的函数,表示为x
,并返回右边的东西 - 你应该能够递归地告诉它会做什么,对吗?