函数柯里化
有遇到如下的问题,初始看到的时候并没有一些解决思路,所以去看了一下函数柯里化。
柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。
add(1); // 1 add(1)(2); // 3 add(1)(2)(3);// 6 add(1)(2, 3); // 6 add(1, 2)(3); // 6
知识点:对象(包括数组,对象,函数等)参与原始运算如算术或逻辑运算时,会无参调用其 toString 或者 valueOf 方法得到一个原始值,然后用这个原始值参与运算,。能够持续调用,必然返回函数,能够当成数值,那只能是因为它实现了 toString 或者 valueOf 方法。
var curring = () => { var result = []; var add = (...args) => { result = result.concat(args); return add; }; add.toString = () => { return result.reduce((pre, cur) => pre + cur, 0); } return add; }; var add = curring(); console.log(add(1)(2)(3)(4)(5)(6)); //21 add = curring(); console.log(add(1, 2)(3, 4)(5, 6)); //21 add = curring(); console.log(add(1, 2, 3, 4, 5, 6)); //21
看了一点,还是没吃透,后面再说,肝不动了.........
项目中感觉也不太用得到,这个是在情况下会用到呢,疑惑。
推荐阅读:https://juejin.cn/post/6864378349512065038
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了