首页 > 其他分享 >在前端中函数柯里化的妙用~

在前端中函数柯里化的妙用~

时间:2023-06-06 11:22:59浏览次数:33  
标签:妙用 调用 return 函数 前端 curriedAdd 参数 柯里化

前言:

在使用它之前我们需要先了解什么是柯里化?

所谓的柯里化不过就是将多个固定的参数生成一个新动态的调用函数,这句话看起来有点绕!但是我们理解清楚后就不会有这种感觉~

在某些场景中我的执行函数是固定参数才会执行的,但是这些参数取数又不是一次性的时候你会怎么处理?

我们一个函数有七八个函数,但是我们的函数的某些参数属于固定的,那么我们需要在每次调用的时候去多次传入这些参数吗?

显然这是很冗余的做法!有的人可能会说我可以把固定的参数直接封装起来,直接调用不就好了?

你虽然可用这么做,但是~,如果有多个地方你是不是需要多次去定义调用?

此时我们的柯里化就能很好的帮助你解决这个问题~

 

1.声明柯里化函数

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) { // 如果传入的参数数量达到了原函数的参数数量,则直接调用原函数
      return fn.apply(this, args);
    } else { // 否则返回一个新的函数,并等待接收更多的参数
      return function(...moreArgs) {
        return curried.apply(this, args.concat(moreArgs));
      }
    }
  };
}

2.实例加法调用柯里化

function add(x, y, z) {
  return x + y + z;
}

const curriedAdd = curry(add);

console.log(curriedAdd(1)(2)(3)); // 6

// 亦或者我们需要前两位参数是固定的?
const curriedAdd = curriedAdd(1)(2);

curriedAdd(3) // 6
curriedAdd(2) // 5
// ....多次调用 

  

标签:妙用,调用,return,函数,前端,curriedAdd,参数,柯里化
From: https://www.cnblogs.com/lixian001/p/17460002.html

相关文章

  • 前端彩色背景
    div{background:linear-gradient(toright,red,orange,yellow,green,blue,indigo,violet);background-size:1000%100%;animation:smooth-transition5sinfinitealternate;}@keyframessmooth-transition{0%{background-position:0%50%;}......
  • 前端遗忘知识点
    #JS1.基本数据类型numberstringbooleanundefindnullbigintsymbol2.交互alertconfirm确认prompt带输入的确认3.Object.assign(a,b,c)进行合并将a,b,c中的同名属性进行合并4.计算属性名可以将变量的计算结果作为属性的名称```letname="firstname"letperson={......
  • 前端实现导出word文档docx格式
    说明前端实现导出word文档,我们需要用到docxtemplater这个库使用的是vue2.6和vue-cli5还需要准备一个word模板,更多模板变量请去docxtemplater官网获取准备word模板安装需要用到的库//安装docxtemplaternpminstalldocxtemplaterpizzip--save//安装jszip-utilsn......
  • 自主搭建5个精品脚手架,玩转前端提效-重磅首发
    自主搭建5个精品脚手架,玩转前端提效-重磅首发download:3wzxit666comLaravel是一个快速、简洁且高效的PHP框架,被广泛应用于Web开发领域。在企业级电商项目中,使用Laravel进行重构可以提高项目的可维护性和代码质量。为什么要进行重构?随着时间的推移和业务的扩展,企业级电商项目的代码......
  • springmvc后端接收前端数据的四种方式
    前端登录页面代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><h1>登录页面</h1><formaction="login.do"......
  • 纯前端操作文件
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......
  • 2021-08-12--Web前端性能指标和性能优化(综述)
    title:网站的几个性能指标和优化(简易)categories:-网络安全与性能优化tags:-性能优化-性能指标-白屏时间-首屏时间-TTFBabbrlink:5c56date:2021-08-1223:42:49updated:2021-08-1223:42:49来源:https://m.sohu.com/a/201865334_509523/关于......
  • 帮你梳理了一份前端知识架构图
    列一份前端知识架构图在上一篇文章中,我们简要地总结了前端的学习路径与方法,我们提到的第一个学习方法就是:建立知识框架。那么,今天我们就一起来列一份前端的知识框架图。在开始列框架之前,我想先来谈谈我们的目标。实际上,我们在网上可以找到很多参考资料,比如MDN这样的参考手册,又比......
  • 系统化学习前端之Vue(vue2 组件通信)
    前言前文vue2基础中聊过,页面本质是DOM树,而在vue2中组件=vm实例对象=DOM。因此,页面其实也是组件树构成,组件之间形成父子关系,兄弟关系等,相互之间通信也是组件树的必须要求。vue2组件通信组件通信即组件之间的数据传递。props和$emit$attrs和$listener$parent......
  • 一个优秀的前端开发相关的博客
         好久没写技术博客了,前段时间离职后,就离开了自己奋斗四年多的公司和城市,踏入新的城市和公司,埋头苦干到现在,网站一期已经上线一段时间了。在新公司完全进行web开发,成天接触js,css等技术,也慢慢开始关注这方面的技术博客,后续会将自己发现的博客记录下来和大家分享。好了,废话......