柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数
经典面试题
add(1)(2)(3) = 6;add(1, 2, 3)(4) = 10;add(1)(2)(3)(4)(5) = 15;
es5写法
function currying() {// 首先先将arguments中的参数指向到一个新的数组中let args = Array.prototype.slice.call(arguments)let res = function () {for (let i of arguments) { args.push(i) }return res}res.toString = function () {return args.reduce((a, b) => a + b, 0)}return res}
es6写法
function currying(...args) {let res = function (...arg) {args.push(...arg)return res}res.toString = function () {return args.reduce((a, b) => a + b)}return res}
