How can I make var a = add(2)(3); //5 work?

后端 未结 28 2353
长发绾君心
长发绾君心 2020-11-27 14:11

I want to make this syntax possible:

var a = add(2)(3); //5

based on what I read at http://dmitry.baranovskiy.com/post/31797647

I\

28条回答
  •  一生所求
    2020-11-27 14:56

    It's about JS curring and a little strict with valueOf:

    function add(n){
      var addNext = function(x) {
        return add(n + x);
      };
    
      addNext.valueOf = function() {
        return n;
      };
    
      return addNext;
    }
    
    console.log(add(1)(2)(3)==6);//true
    console.log(add(1)(2)(3)(4)==10);//true
    

    It works like a charm with an unlimited adding chain!!

提交回复
热议问题