如何减少函数参数的输入

栏目: 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'
})

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

查看所有标签

猜你喜欢:

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

决战618:探秘京东技术取胜之道

决战618:探秘京东技术取胜之道

京东集团618作战指挥中心 / 电子工业出版社 / 2017-11 / 99

《决战618:探秘京东技术取胜之道》以京东技术团队备战618为主线,集合京东数百位技术专家,对京东所有和618相关的关键技术系统进行了一次全面的梳理和总结,是京东技术体系的智慧结晶。 《决战618:探秘京东技术取胜之道》从前端的网站、移动入口到后端的结算、履约、物流、供应链等体系,系统展示了京东最新的技术成就。同时,也涵盖了京东正在充分运用大数据、人工智能等先进技术对所有技术体系架构进行整体......一起来看看 《决战618:探秘京东技术取胜之道》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换