如何减少函数参数的输入

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

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

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

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

  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'
})

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

查看所有标签

猜你喜欢:

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

家事的撫慰(下冊)

家事的撫慰(下冊)

Cheryl Mendelson / 甘錫安 / 大家出版社 / 2014-1-28 / NT$520

家事界暢銷參考書籍 各大媒體一致盛讚 亞馬遜讀者四星半高度評鑑 誠品、博客來、香港誠品 三選書 家務界經典暢銷書│各大媒體一致盛讚│讀者四星半高度評鑑 「這個世代最重要的家事著作!」──《大西洋月刊》 恢復家務打理者應有的地位,賦予應有的尊嚴和價值。 以生理的勞動、心力的投入,以及正確的持家知識,換得情感上的溫暖與安全。 .家裡空氣有異味,用香味來......一起来看看 《家事的撫慰(下冊)》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具