js-柯里化

简介: 1.定义:   把一个接受多个参数的函数变成一个以原函数首参数为参数并且返回一个函数来参数其他参数。   简单就是把一个含有多个参数的函数,变成分步来完成传参来并且返回函数的函数 2.例子://将多个参数的函数转为单一参数的函数 function fn(a,b,c){ return a+...

1.定义:

  把一个接受多个参数的函数变成一个以原函数首参数为参数并且返回一个函数来参数其他参数。

  简单就是把一个含有多个参数的函数,变成分步来完成传参来并且返回函数的函数

2.例子://将多个参数的函数转为单一参数的函数

function fn(a,b,c){ return a+b+c }
function curry(fn){
  var args = [];
  return function fe(){
    args = args.concat([].slice.call(arguments,0))
    if(args.length = fn.length) return fn.apply(null,args)
    else fe
  }
}


//延时执行,执行前可以做一些判断
var state = false;
function doSomeThing(fn,state) {
return function () {
if(state == true){
return fn.apply(null,arguments)
}else {
return state
}
}
}
function add(a,b) {
return a+b
}
console.log(doSomeThing(add,state)(1,2))
state = true
console.log(doSomeThing(add,state)(1,2))

//函数节流(事件节流)  防止多次点击等事件
function curry(fn,delay) {
var preTime = 0
return function () {
var currentTime = parseInt(new Date().getTime())
if(currentTime - preTime > delay){
preTime = currentTime
return fn.apply(null,arguments)
}
}
}
function add(a,b) {
return a+b
}
var curry = curry(add,100)
console.log(curry(1,2))
setTimeout(function () {
console.log(curry(1,2))
},300)
console.log(curry(1,2))

//防止抖动  页面抖动等
function curry(fn,delay) {
var loop;
return function () {
clearTimeout(loop)
var args = arguments
loop = setTimeout(function () {
fn.apply(null,args)
},delay)
}
}
function add(a,b) {
console.log(a+b)
}
var curry = curry(add,100)
curry(1,2)
curry(3,2)








  

3.基础:

  闭包

  函数作为返回值

  函数作为参数延时执行

  apply 函数

 

4.作用:

  参数服用

  计算延时执行

  动态创建函数

 

相关文章
|
3月前
|
存储 JavaScript 前端开发
JavaScript函数柯里化
JavaScript函数柯里化
|
6月前
|
设计模式 JSON 前端开发
前端面试必看(手写Promise+js设计模式+继承+函数柯里化等)JavaScript面试全通关(1/3)
前端面试必看(手写Promise+js设计模式+继承+函数柯里化等)JavaScript面试全通关(1/3)
40 0
|
Web App开发 缓存 前端开发
✨从柯里化讲起,一网打尽 JavaScript 重要的高阶函数
✨从柯里化讲起,一网打尽 JavaScript 重要的高阶函数
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
167 0
|
JavaScript 前端开发
【JavaScript】函数式编程——函数柯里化
【JavaScript】函数式编程——函数柯里化
91 0
|
JavaScript
JS查漏补缺——柯里化
JS查漏补缺系列是我在学习JS高级语法时做的笔记,通过实践费曼学习法进一步加深自己对其的理解,也希望别人能通过我的笔记能学习到相关的知识点。这一次我们来了解柯里化
77 0
|
JavaScript
js:偏函数Partial和柯里化Currying
js:偏函数Partial和柯里化Currying
js:偏函数Partial和柯里化Currying
|
JavaScript 程序员
玩转JS基础——函数柯里化
在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
135 0
|
JavaScript 前端开发 Unix
【函数式编程】基于JS进行函数式编程(三)柯里化 | 偏函数 | 组合与管道
【函数式编程】基于JS进行函数式编程(三)柯里化 | 偏函数 | 组合与管道
161 0
【函数式编程】基于JS进行函数式编程(三)柯里化 | 偏函数 | 组合与管道
|
缓存 JavaScript 前端开发
JavaScript 函数式编程技巧 - 柯里化
柯里化(Currying),又称部分求值(Partial Evaluation),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。 核心思想是把多参数传入的函数拆成单参数(或部分)函数,内部再返回调用下一个单参数(或部分)函数,依次处理剩余的参数。 按照Stoyan Stefanov --《JavaScript Pattern》作者 的说法,所谓“柯里化”就是使函数理解并处理部分应用
JavaScript 函数式编程技巧 - 柯里化