为了账号安全,请及时绑定邮箱和手机立即绑定

js实现a(3)(4)(4)=48

js实现a(3)(4)(4)=48

子衿沉夜 2019-03-13 17:14:59
js实现a(3)(4)(4) // print 48
查看完整描述

8 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

最简单最完美实现

// es6

   const mul = (x) => {

    let sum = x

    let curried = (y) => {

        sum = sum * y

        return curried

    }

    curried.toString = () => sum

    return curried

   }

    console.log(mul(1)) //1

    console.log(mul(1)(2))//2

    console.log(mul(1)(2)(3))//6

    console.log(mul(1)(2)(3)(4))//24

    ...

    

   // es5

 function mul(x){

  var sum = x

  var curried = function(y){

    sum = sum * y

    return curried

  }

  curried.toString=function(){

    return sum 

  }

  return curried

}

    console.log(mul(1)) //1

    console.log(mul(1)(2))//2

    console.log(mul(1)(2)(3))//6

    console.log(mul(1)(2)(3)(4))//24

    ...


查看完整回答
1 反对 回复 2019-03-26
?
HUWWW

TA贡献1874条经验 获得超12个赞

var f = (function() {

    let r = 1;

    return function f(...args){

        r *= args.reduce((p, n) => p * n);

        f.valueOf = () => r;

        return f;

    }

}());

f(3)(4)(4)


查看完整回答
反对 回复 2019-03-26
?
翻阅古今

TA贡献1780条经验 获得超5个赞

const a = () => () => () => 48


查看完整回答
反对 回复 2019-03-26
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

var a = function(x) {

    return function(y) {

      return function(z) {

          console.log(x * y * z);

          return x * y * z;

      };

    };

};


查看完整回答
反对 回复 2019-03-26
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

Function Currying

Simple, Beautiful, Interesting

function curry(fn, ...args){

    return args.length === fn.length ? 

        fn(...args) : 

        (...next_args) => curry(fn, ...args, ...next_args); 

}

Next

function mul(a, b, c){

    return a * b * c; 

}

// mul(3, 4, 4); => 48 


let a = curry(mul); 


a(3)(4)(4); 

// => 48 


a(3, 4, 4); 

// => 48 


a(3)(4, 4); 

// => 48 


a()()()()()(3, 4)(4); 

// => 48 

S

https://img1.sycdn.imooc.com//5c99dc57000128bc04250353.jpg

查看完整回答
反对 回复 2019-03-26
?
www说

TA贡献1775条经验 获得超8个赞

let total;

function a(m){

    total = m;

    return function(n){

        return a(m*n)

    }

}


a(3)(4)(4)

console.log(total)  //48


查看完整回答
反对 回复 2019-03-26
  • 8 回答
  • 0 关注
  • 1169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信