1.什么是柯里化

柯里化,英语:Currying,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

2.柯里化的用途

参数复用

看下面这个例子:

function uri (protocol,hostname,pathname){return `${protocol}${hostname}${pathname}`;
}const uri1 = uri("https://","www.csdn.net","/blog");
console.log(uri1);

在这个函数中,protocol这个参数可能每个url都会用到,会造成参数重复。
优化如下:

function uri_curring (protocol){return function(hostname,pathname){return `${protocol}${hostname}${pathname}`;}
}const uri_https = uri_curring("https://");
console.log(uri_https);
const uri1 = uri_https("www.csdn.net","/blog");
console.log(uri1);
[Function]
https://www.csdn.net/blog

上面的代码将接受多个参数的函数改造为只接受一个参数的函数。这个函数内部返回了一个接受其余参数的函数,由作用域链可知,被返回的最内层函数可以访问外层函数的参数,故可在最内层函数完成原有所有参数的处理。

兼容性检测:提前确认/提前返回

const whichEvent = ( function () {// 优先判断addEventListenerif(window.addEventListener){return function(element,type,listener,useCapture){element.addEventListener(type,function(e){listener.call(element,e);},useCapture);}// 判断IE }else if(window.attchEvent){return function(element,type,handler){element.attchEvent('on'+element,function(e){handler.call(element,e);});}}
} )();

延迟执行

// add(1)(2)(3) = 6;
// add(1,2,3)(4) = 10;
// add(1)(2)(3)(4)(5) = 15;
function add(){let args = Array.prototype.slice.call(arguments);let inner = function(){args.push(...arguments);return inner;}inner.toString = function(){return args.reduce(function(prev,cur){return prev + cur;});}return inner;
}console.log(add(1)(2)(3));

Javascript函数柯里化及其应用场景相关推荐

  1. JavaScript函数柯里化详解

    目录 一.简单了解apply和call 二.什么是函数柯里化? 三.写一个公共的柯里化函数 四.创建一个灵活的柯里化函数 五.写一个可控制的执行时间的柯里化函数 一.简单了解apply和call ca ...

  2. 带你看懂javascript函数柯里化(currying)

    1.什么是柯里化 这里参照百度百科: 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技 ...

  3. 什么是函数柯里化,函数柯里化的应用场景,函数柯里化的优缺点

    函数柯里化 1. 什么是函数柯里化? 2. 函数柯里化面试题 3. 应用场景 1. 什么是函数柯里化? 函数柯里化是js闭包的典型应用.所以缺点就是闭包造成的缺点,占用内存较多等 什么是函数柯里化?就 ...

  4. JavaScript函数柯里化

    一.简单了解apply和call call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向. call 和 appl ...

  5. JavaScript 中函数 柯里化风格的运用

    导语 当我第一次看见 柯里化 这个词语的时候,我也表现出一脸懵,在代码程序中,看见这种 "高大上"的一些词汇叫法的时候,下意识的会觉得这个概念很难很深奥,但是当冷静下来,去深究过后 ...

  6. js面试高频题:函数柯里化的实现(彻底弄懂)

    函数柯里化的适用场景有: 1. 参数复用 2. 延时执行 3. 提前确认 函数柯里化的核心在于:函数里面返回函数,从而做到参数复用的目的. 我们以一个js经典面试题为例开始讲解: 实现一个函数,使得满 ...

  7. 了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化

    js基础知识中的作用域和闭包 一.作用域 1.作用域.自由变量简介 (1)作用域定义 (2)作用域实例演示 (3)自由变量定义 (4)自由变量实例演示 2.作用域链简介 (1)作用域链定义 (2)作用 ...

  8. JavaScript 专题之函数柯里化

    JavaScript 专题系列第十三篇,讲解函数柯里化以及如何实现一个 curry 函数 定义 维基百科中对柯里化 (Currying) 的定义为: In mathematics and comput ...

  9. 【JavaScript】函数柯里化

    文章目录 1. 什么是函数柯里化 2. 柯里化常用场景 2.1 参数复用 2.2 提前返回 2.3 延迟执行 3. 经典例题 3.1 封装通用柯里化函数 3.2 创建一个灵活的多步执行的柯里化函数 3 ...

最新文章

  1. 苹果手表可以运行 ruby 脚本了
  2. 自动化运维工具Saltstack详细介绍
  3. 解决:object_detection/protos/*.proto: Invalid argument.
  4. android 隐藏键盘时ui延迟恢复,android 软键盘的显示与隐藏问题的研究
  5. input输入数字验证
  6. Android 系统(104)---浅谈ANR及log分析ANR
  7. 小程序modal控件(显示为弹框) 可有输入框
  8. UVALive 4998 Simple Encryption
  9. Xamarin.Android开发实践(一)
  10. 老将回归,英特尔的复兴之路
  11. 手机联系人分组名字都没了_艺术签名手写设计,每个名字都应该是精品,只是你没找对方法...
  12. 电子元器件/模块供应商汇总
  13. SwiftUI Button精品组件之完美的SwiftUI抖动按钮效果(教程含源码)
  14. Excel/WPS如何查找重复数据
  15. 月薪超1.6万美元!对冲基金实习生也内卷
  16. 设计一个用于人事管理的People(人员)类
  17. c语言实现采集设备snmp信息,使用snmpwalk采集设备的OID信息
  18. 1.1.2续 特殊二极管部分选型
  19. 孝经白话:庶人章第六
  20. C# wpf无法打开osk.exe解决方法

热门文章

  1. Word中英文导致空格间距过大如何解决?
  2. 【关于打印errno]
  3. SAP BW4 410(数据抽取、信息对象、建模等)学习1-5章
  4. Mybatis为什么查询结果为空时返回值为NULL或空集合?
  5. 这年头,能坐上火箭的东西不多啊!Java版本号算一个!
  6. PIC16F877A单片机 (IIC总线+PCF8563芯片)
  7. 2021年中国光伏发电产业运行现状及未来发展趋势分析[图]
  8. 解决Margin塌陷问题方法
  9. KV260(一)运行AI Box
  10. 触摸屏式温控器参数笔记(五)(di设定)