热门

最新

红包

立Flag

投票

同城

我的

发布
qq_17496365
Web海风
5 年前
trueqq_17496365

go项目实战 <微信公众号后台开发>(一、获取token)

CSDN App 扫码分享
分享
评论
1
打赏
  • 复制链接
  • 举报
下一条:
实现:add(1) // 1add(1)(2)// 3add(1, 2)(3, 4, 5)(6) // 21对于不定参数的求和处理比较简单,很容易想到通过 arguments 或者扩展符的方式获取数组形式的参数,然后通过 reduce 累加求和。但如果直接返回结果那么后面的调用肯定会报错,所以每次返回的必须是函数,才能保证可以连续调用。也就是说 add 返回值既是一个可调用的函数又是求和的数值结果。要实现这个要求,我们必须知道函数相关的两个隐式转换函数 toString() 和 valueOf()。toString() 函数会在打印函数的时候调用,比如 console.log、valueOf 会在获取函数原始值时调用,比如加法操作。具体代码实现如下,在 add() 函数内部定义一个 fn() 函数并返回。fn() 函数的主要职能就是拼接参数并返回自身,当调用 toString() 和 valueOf() 函数时对拼接好的参数进行累加求和并返回。解答:function add(...args) {  let arr = args  function fn(...newArgs) {    arr = [...arr, ...newArgs]    return fn;  }  fn.toString = fn.valueOf = function() {    return arr.reduce((acc, cur) => acc + parseInt(cur))  }  return fn}
立即登录