js的高级用法——柯里化

news/2024/9/19 15:26:58 标签: javascript, 前端, 开发语言

js的高级用法——柯里化

javascript">function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn.apply(this, args)
    } else {
      const h = function(...args2) {
        return curried.apply(this, args.concat(args2)) // 这是个轮询,走到最后还是会return值
      }
      return h
    }
  }
}
function sum(a,b,c,d) {
  return a+b+c-d
}

const curriedSum = curry(sum)
console.log(curriedSum(4)(3)(2)(1)) // 8
console.log(curriedSum(1, 2)(3, 4)) // 2
console.log(curriedSum(1)(2, 3)(4)) // 2
console.log(curriedSum(1, 2, 3, 4)) // 2

http://www.niftyadmin.cn/n/5665776.html

相关文章

量化交易backtrader实践(一)_数据获取篇(3)_爬取数据

这一节实践其实是在上一节之前进行的,背景原因是因为tushare.pro的积分不够高,当时还没有接触到使用akshare等其他接口,因此对于全股票列表用的是去网页上爬的方式获得的,也就借此机会,再复习了一遍爬虫的相关知识。 …

【free -h内存占用】

在 free -g 命令的输出中,最能准确反映系统中剩余可用内存的参数是 available。这个参数考虑了缓存和缓冲的内存,可以更准确地反映系统的可用内存。 让我们再看一下假设的输出: total used free shared buff/cache av…

【Bean】BeanPostProcessor的前置方法和后置方法的作用和使用

在 Spring 中,BeanPostProcessor是一个非常重要的接口,用于在 Spring 容器实例化、初始化 Bean 的前后进行自定义的处理操作。而前置处理器(实现了BeanPostProcessor接口并在特定时机执行特定逻辑的对象)主要有以下作用&#xff1…

【devops】devops-gitlab之部署与日常使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

【Python】探索 PluginBase:Python 插件系统的灵活构建

我承认这道菜有赌的成分,果然还是赌输了。 在现代软件开发中,插件系统为应用程序提供了极大的灵活性和扩展性。Python,作为一种流行的编程语言,拥有丰富的库和框架来支持插件的开发。今天,我们将深入探讨一个名为Plug…

LinuxC高级作业1

1.已知网址www.hqyj.com截取出网址的每一个部分 2.整理思维导图 3.将配置桥接网络的过程整理成文档 i)) 保证虚拟机提供了桥接模式 菜单栏中 ----> 虚拟机 -----> 设置 -----> 网络适配器 ii) 保证虚拟机可以设置桥接网络 菜单栏中 ----> 编辑 -----> 虚拟网…

高性价比无线蓝牙耳机买哪款好?四大性价比火爆机型大盘点

高性价比无线蓝牙耳机买哪款好?面对市场上琳琅满目的产品,如何挑选到一款高性价比的无线蓝牙耳机,既能满足音质需求,又不至于让预算过于紧张,成为了消费者关注的焦点,根据我多年的选购蓝牙耳机的经验&#…

基于yolov5的不同颜色安全帽检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的不同颜色安全帽检测系统是一种利用深度学习技术,特别是YOLOv5目标检测算法的创新应用。该系统旨在提高施工现场的安全管理水平,通过实时识别和检测工人佩戴的安全帽颜色,实现对安全规范的精准监督。 YOLOv5作为一…