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.作用:

  参数服用

  计算延时执行

  动态创建函数

 

相关文章
|
8月前
|
JavaScript 前端开发 Java
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是一种强大的函数式编程技术,它通过将函数分解为单参数形式,实现了灵活性与可复用性的统一。无论是参数复用、延迟执行,还是函数组合,柯里化都为现代编程提供了极大的便利。 从 Redux 的选择器优化到复杂的数据流处理,再到深度嵌套的函数优化,柯里化在实际开发中展现出了非凡的价值。如果你希望编写更简洁、更优雅的代码,柯里化无疑是一个值得深入学习和实践的工具。从简单的实现到复杂的应用,希望这篇博客能为你揭开柯里化的奥秘,助力你的开发之旅! 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
缓存 JavaScript 前端开发
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
该文章详细讲解了JavaScript中的作用域、闭包概念及其应用场景,并简要分析了函数柯里化的使用。
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
|
JavaScript 前端开发
JS 偏函数、函数柯里化~
该文章介绍了JavaScript中偏函数和函数柯里化的概念、实现方法和使用场景,通过代码示例展示了如何创建预设参数的函数以及如何将多参数函数转换成单参数函数的链式调用。
107 0
JS 偏函数、函数柯里化~
|
JavaScript 前端开发 测试技术
JavaScript进阶-高阶函数与柯里化
【6月更文挑战第18天】在JavaScript中,高阶函数和柯里化是函数式编程的核心。高阶函数接收或返回函数,常用于数组操作和事件处理。柯里化将多参数函数转化为单参数的逐次求值过程,用于参数预绑定和函数组合。两者能简化逻辑、提高复用性,但也需注意易错点,如混淆参数、过度柯里化,应适度使用并配合测试保证正确性。通过实践和使用工具,如lodash的`_.curry`,能更好地利用这些技术。
126 5
|
JavaScript 前端开发
JS : 柯里化 分布传参给函数
JS : 柯里化 分布传参给函数
|
JavaScript 前端开发 网络架构
函数柯里化:JavaScript中的高级技巧
函数柯里化:JavaScript中的高级技巧
|
存储 JavaScript 前端开发
JavaScript函数柯里化
JavaScript函数柯里化
133 0
|
设计模式 JSON 前端开发
前端面试必看(手写Promise+js设计模式+继承+函数柯里化等)JavaScript面试全通关(1/3)
前端面试必看(手写Promise+js设计模式+继承+函数柯里化等)JavaScript面试全通关(1/3)
199 0
|
前端开发
前端知识案例37-javascript基础语法-柯里化
前端知识案例37-javascript基础语法-柯里化
96 0
前端知识案例37-javascript基础语法-柯里化
|
Web App开发 缓存 前端开发
✨从柯里化讲起,一网打尽 JavaScript 重要的高阶函数
✨从柯里化讲起,一网打尽 JavaScript 重要的高阶函数