希望实现的功能:
mult(3);
//(x) => 3 * mult(x)
mult(3)(4);
//(x) => 3 * (4 * mult(x))
mult(3)(4)();
//12
尝试:
function mult(x){
if(x === undefined){
return 1;
}else{
return (y => x * mult(y));
}
}
结果:
mult(3)
//y => x * mult(y)
//looks pretty good
mult(3)()
//3
//exactly what I want so far.
mult(3)(4)()
//Uncaught TypeError: mult(...)(...) is not a function
sure enough,
mult(3)(4)
//NaN
然而mult(3)
看起来不错,而且typeof mult(3) === "function"
。
怎么回事? 我在JS中不能这么花哨吗?为什么不能呢?
mult(3)(4)
时会发生什么。你在调用(y => 3 * mult(y))
,其中y
是4
。mult(4)
返回什么?一个函数。3 * <一个函数>
返回什么?NaN
。 - Felix Kling