JSFiddle - React, Tailwind, and code Playground

by Vladymyr Shevchuk

JavaScript

function sum(a) {

  var currentSum = a;

  function f(b) {
    currentSum += b;
    return f;
  }

  f.toString = function() {
    return currentSum;
  };

  return f;
}

function makeSummator (initValue) {
	let accum = initValue;
  
	function sum (number) {  
    accum += number;
    return sum;
  }
  
  sum.toString = () => {
  	console.error('toString');
	  return accum;
  };
  
  return sum;
}

function add(...args) {
  function recSum(num) {
    return add(...args, num)
  }
  
  recSum.valueOf = function() {
    return args.reduce((acc, n) => acc + n, 0)
  };
  
  return recSum;
}

console.error(sum(1)(2)(3));
console.error(makeSummator(1)(2)(3));
console.error(add(1)(2)(3));