如何减少函数参数的输入

栏目: JavaScript · 发布时间: 5年前

内容简介:导语: 针对常用的函数,如何能减少必要的参数输入呢?前几天在某论坛上看的一个问题,实际上这问题并不难,如何减少函数参数的输入,目前可以用两种方法来实现:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数。

导语: 针对常用的函数,如何能减少必要的参数输入呢?

前几天在某论坛上看的一个问题,实际上这问题并不难,如何减少函数参数的输入,目前可以用两种方法来实现:

  1. 柯里化:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数;

  2. 解构:基于ES6的变量解构

1. 柯里化

把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数。

比如有一个数据上报的函数A,在多次调用这个函数A时,有两个参数是固定的,这样我使用柯里化的原理来优先输入这两个固定的参数:

// bossid和pwd为数据必须的参数
// page为当前页面
// act为操作
function funcA(bossId, pwd, page, act) {
    let img = new Image();
    img.src = `xxx.com/?bossId=${bossId}&pwd=${pwd}&page=${page}&act=${act}`;
}
funcA(1234, 'qer45fg', 'mainpage', 'login');
funcA(1234, 'qer45fg', 'ownpage', 'withdraw');

使用柯里化来实现:

function curryFuncA(bossId, pwd) {
    return (page, act) => {
        let img = new Image();
        img.src = `xxx.com/?bossId=${bossId}&pwd=${pwd}&page=${page}&act=${act}`;
    }
}
const send = curryFuncA(1234, 'qer45fg');
send('mainpage', 'login');
send('ownpage', 'withdraw');

2. 解构

在ES6中提供了解构的概念,我们可以只获取并使用其中的某几个变量即可。

解构更详细的理解,可以参考阮一峰的文章: 变量的解构赋值

针对上面的函数funcA,我们也可以这样实现:

function funcA({
    bossId = 1234,
    pwd = 'qer45fg',
    page = '',
    act = ''
}) {
    let img = new Image();
    img.src = `xxx.com/?bossId=${bossId}&pwd=${pwd}&page=${page}&act=${act}`;
}
funcA({
    page: 'mainpage',
    act: 'login'
});

// 需要改变bossId和pwd的值时,可以直接传入即可
funcA({
    bossId: '5678',
    pwd: 'aabbcc',
    page: 'ownpage',
    act: 'withdraw'
})

以上所述就是小编给大家介绍的《如何减少函数参数的输入》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

禅与摩托车维修艺术

禅与摩托车维修艺术

(美)罗伯特·M.波西格 / 张国辰 / 重庆出版社 / 2011-9 / 36.00元

在一个炎热的夏天,父子两人和约翰夫妇骑摩托车从明尼苏达到加州,跨越美国大陆,旅行的过程与一个青年斐德洛研修科学技术与西方经典,寻求自我的解脱,以及探寻生命的意义的过程相互穿插。一路上父亲以一场哲学肖陶扩的形式,将见到的自然景色,野外露营的经历,夜晚旅店的谈话,机车修护技术等等日常生活与西方从苏格拉底以来的理性哲学的深入浅出的阐述与评论相结合,进行了对形而上学传统的主客体二元论的反思,以及对科学与艺......一起来看看 《禅与摩托车维修艺术》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具