js 深入原理讲解系列-currying function
2024-08-29 22:35:29
js 深入原理讲解系列-currying function
能看懂这一题你就掌握了 js 科里函数的核心原理
不要专业的术语,说人话,讲明白!
Q: 实现 sum 函数使得以下表达式的值正确
const log = console.log;
const sum = ???;
sum(1, 2, 3).sumOf(); //6
sum(2, 3)(2).sumOf(); //7
sum(1)(2)(3)(4).sumOf(); //10
sum(2)(4, 1)(2).sumOf(); //9
A: 原型链
// bug
function sum(...args) {
let len = sum.length;
// let args = arguments;
return function curry (args) {
if(args.length <= len) {
return sum.apply(sum, ...args)
} else {
return function (...args2) {
curry.apply(sum, args.concat(...args2))
}
}
this.sumOf = function() {
return this.curry();
}
}
}
// OK
const sum = (...args) => {
const collectArgs = (...collectedArgs) => sum(...collectedArgs, ...args)
collectArgs.sumOf = () => args.reduce((a, b) => a + b, 0);
return collectArgs;
}
科里函数 / currying function
高阶函数
科里化
原型链
闭包
closure
refs
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
最新文章
- 利用opencv训练样本分类
- 从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN
- android 获取SD卡相关信息
- ASP.NET MVC系列:添加模型的验证规则
- [20140722] forwarded和forwarding记录
- [转]FastJSON通过SerializeFilter定制序列化
- BizTalk动手实验(五)Map开发测试
- Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能
- Java ConcurrentHashMap
- Django 学习
- ThinkPhp之分页
- Android清空画布
- uva 11992 - Fast Matrix Operations
- AVL树相关操作
- Winform 窗体获得焦点
- Linux分页机制之概述--Linux内存管理(六)
- Linux如何挂载U盘
- Debian下undefined reference to ‘pthread_create’问题解决
- sql面试题-----行转列
- Thrift IDL
热门文章
- Centos 安装postgreSQL9.4.3
- 一套高可用、易伸缩、高并发的IM群聊、单聊架构方案设计实践
- 自动化接口差异测试-diffy 回归测试 charles rewrite 请求
- Server:www121 Server:www120 Server:NWS_SP 内容被散列,并在响应中放入Etag When to Use Entity-Tags and Last-Modified Dates
- Spring Cloud Config、Apollo、Nacos配置中心选型及对比
- JavaWeb——JSP内置对象request,response,重定向与转发 学习总结
- Django(ORM单表操作)
- Java中finalize()方法的作用
- 【noi 2.5_7834】分成互质组(dfs)
- hdu3033 I love sneakers!