题目:
实现一个add方法,使计算结果能够满足如下预期:
add(1)(2)(3) = 6;
add(1, 2, 3)(4) = 10;
add(1)(2)(3)(4)(5) = 15;
分析思路一:实现累加功能
function add(){
let args = [...arguments];
let inner = function(){
args.push(...arguments);
let sum = args.reduce((prev,cur)=>prev+cur)
return sum
}
return inner
}
console.log(add(1)(2)) //✔
console.log(add(1)(2)(3)) //❌
上述函数好像实现了功能,但是当我们再增加一个括号就会出错,所以说未能实现任意延时输入参数的功能
分析思路二:实现延时输入参数功能
解决办法:1. 预先设置无数多个参数 (不现实pass)2. 递归来解决
function add(){
let args = [...arguments];
let inner = function(){
args.push(...arguments);
let sum =

本文探讨了JavaScript中的柯里化概念,通过分析不同思路解答面试题,如实现累加功能和延时输入参数。文章揭示了在实现过程中遇到的问题,如手动修改隐式转换的限制,并分享了别人提供的解决方案,帮助理解函数柯里化的应用。
最低0.47元/天 解锁文章
699

被折叠的 条评论
为什么被折叠?



