JSFiddle - React, Tailwind, and code Playground
JavaScript
let sum1, sum2, sum3, sum4
sum1 = (a => b => (a += b))(0)
{
let a = 0
sum2 = b => (a += b)
}
sum3 = Object.assign(b => (sum3.a += b), {a: 0})
sum4 = new Proxy((a, b) => a + b, {
counter: 0,
apply(target, th, args){
return this.counter = target.call(null, this.counter, args[0])
}
})
console.log(sum1(1))
console.log(sum1(3))
console.log(sum1(2))
console.log(sum2(1))
console.log(sum2(3))
console.log(sum2(2))
console.log(sum3(1))
console.log(sum3(3))
console.log(sum3(2))
console.log(sum4(1))
console.log(sum4(3))
console.log(sum4(2))