实现一个sum方法使其有以下表现
sum(2,3).valueOf() //5
sum(2,3,4).valueOf() //9
sum(2,3)(4).valueOf() //9
sum(2,3,4)(2)(3,4).valueOf() //18
前面部分sum()
,sum()()
都好说。但是怎么重写valueOf让其打印前面执行方法返回的数据的和?
实现一个sum方法使其有以下表现
sum(2,3).valueOf() //5
sum(2,3,4).valueOf() //9
sum(2,3)(4).valueOf() //9
sum(2,3,4)(2)(3,4).valueOf() //18
前面部分sum()
,sum()()
都好说。但是怎么重写valueOf让其打印前面执行方法返回的数据的和?
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
sum()
的结果可以继续使用()
运算符,说明sum()
返回的是一个函数(函数/函数表达式/箭头函数的统称);另外,这个返回值还有valueOf()
方法,所以可以先搭个框然后,sum() 的参数累加之和会累加到下一次对返回值(柯里化函数)的调用,不妨先把和算出来保存起。然后
fn
调用的时候,会返回一个类似的fn
,也就是sum()
的返回值,所以可以处理成对sum()
的调用——这段说不太明白,不如直接看代码:结果: