如何减少函数参数的输入

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

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

查看所有标签

猜你喜欢:

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

实用Common Lisp编程

实用Common Lisp编程

Peter Seibel / 田春 / 人民邮电出版社 / 2011-10 / 89.00元

由塞贝尔编著的《实用Common Lisp编程》是一本不同寻常的Common Lisp入门书。《实用Common Lisp编程》首先从作者的学习经过及语言历史出发,随后用21个章节讲述了各种基础知识,主要包括:REPL及Common Lisp的各种实现、S-表达式、函数与变量、标准宏与自定义宏、数字与字符以及字符串、集合与向量、列表处理、文件与文件I/O处理、类、FORMAT格式、符号与包,等等。......一起来看看 《实用Common Lisp编程》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

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

Markdown 在线编辑器