第82题 实现add(1)(2)(3)等于6

    // 实现
    var add = function(x1) {
      var sum = x1
      var fn = function(x2) {
        sum += x2
        return fn // 返回一个函数,函数柯里化要求能够连续给一个函数传参,所以应当返回当前函数,才能连续调用
      }
      fn.toString = function(){ // 给函数加toString
        return sum
      }
      return fn
    }
    
    // 执行的时候去调用toString方法返回结果
    console.log(add(1)(2)(3).toString()) // 手动调用toString 输出6
    console.log(add(1)(2)(3) + '') // + '' 隐式调用toString输出 6
    alert(add(1)(2)(3)) // alert自动调用toString输出 6

这道题目考了函数柯里化:可以连续给一个函数反复传参,反复传的参数还能累积到函数内

Last Updated:
Contributors: leeguooooo