实现一个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让其打印前面执行方法返回的数据的和?
8 回答4.5k 阅读✓ 已解决
6 回答3k 阅读✓ 已解决
5 回答2.6k 阅读✓ 已解决
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决
sum()
的结果可以继续使用()
运算符,说明sum()
返回的是一个函数(函数/函数表达式/箭头函数的统称);另外,这个返回值还有valueOf()
方法,所以可以先搭个框然后,sum() 的参数累加之和会累加到下一次对返回值(柯里化函数)的调用,不妨先把和算出来保存起。然后
fn
调用的时候,会返回一个类似的fn
,也就是sum()
的返回值,所以可以处理成对sum()
的调用——这段说不太明白,不如直接看代码:结果: