bfe.dev 是一个针对前端的刷题网站,像是前端的LeetCode。该系列文章是我在上面的刷题日记。
BFE.dev#23 实现一个sum()方法
实现一个sum()
,使得如下判断成立。
const sum1 = sum(1) sum1(2) == 3 // true sum1(3) == 4 // true sum(1)(2)(3) == 6 // true sum(5)(-1)(2) == 6
从上面的sample,可以比较容易地得出如下结论
sum()
需要返回一个函数,这个函数需要接受一个参数sum()
需要把传入的参数求和,然后重复1==
数字,可以通过type coercion实现,只需要添加valueOf
或者 toString
即可首先完成function的部分。上述的1和2告诉我们需要用一个变量来存储当前的和,这个“和”需要可以在返回的function中可以使用。为了简单,可以直接当作第二个参数即可。
function sum(num, currentSum = 0) { const newCurrentSum = num + currentSum const func = function(arg) { return sum(arg, num + currentSum) } return func }
最后我们处理valueOf
。
function sum(num, currentSum = 0) { const newCurrentSum = num + currentSum const func = function(arg) { return sum(arg, num + currentSum) } func.valueOf = () => newCurrentSum // below also works // func.toString = () => newCurrentSum.toString() return func }
感谢阅读,希望有所帮助。有兴趣可以自己试试。
原创声明,本文系作者授权云+社区发表,未经许可,不得转载。
如有侵权,请联系 yunjia_community@tencent.com 删除。
我来说两句