- 改写add函数
let add = (a, b) => a + b console.log(add(2,3));//5 console.log(add(2,4));//6 console.log(add(2,5));//7 let add2 = add(2) console.log(add2(3)) // 5 console.log(add2(4)) // 6 console.log(add2(5)) // 7 function add () { }
function add (a) { return function (b) { return a+b } }
- 完成curry函数
function sum(a, b, c) { return a + b + c; } const currySum = curry(sum) console.log(currySum(1)(2)(3)); console.log(currySum(1, 2)(3)); console.log(currySum(1)(2, 3)); function curry () {}
function curry (fn) { return function curriedFn (...args) { if (args.length >= fn.length) { return fn.apply(this, args) } else { return function (...args2) { return curriedFn.apply(this, args.concat(args2)) } } } }
- 完成curry函数
function sum(a, b, c) { return a + b + c; } const currySum = curry(sum) console.log(currySum(1)(2)(3)()); console.log(currySum(1, 2)(3)()); console.log(currySum(1)(2, 3)()); function curry () {}
function curry (fn) { let argsArr = [] return function curried (...args) { if(!args.length) { let result = fn.apply(this, argsArr) argsArr = [] return result } else { argsArr = argsArr.concat(args) return curried } } }
- add(1)(2)(3)(4)=10;完成add函数
function add (...num) { let sum = [...num] curry.toString = function () { return sum.reduce((acc,curr) => { return acc+curr },0) } function curry (...args) { sum = sum.concat(args) return curry } return curry } alert(add(1)(2)(3)(4))
柯里化 curry 面试题
于 2023-10-27 23:04:08 首次发布