如何减少函数参数的输入
栏目: JavaScript · 发布时间: 5年前
内容简介:导语: 针对常用的函数,如何能减少必要的参数输入呢?前几天在某论坛上看的一个问题,实际上这问题并不难,如何减少函数参数的输入,目前可以用两种方法来实现:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数。
导语: 针对常用的函数,如何能减少必要的参数输入呢?
前几天在某论坛上看的一个问题,实际上这问题并不难,如何减少函数参数的输入,目前可以用两种方法来实现:
-
柯里化:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数;
-
解构:基于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作战指挥中心 / 电子工业出版社 / 2017-11 / 99
《决战618:探秘京东技术取胜之道》以京东技术团队备战618为主线,集合京东数百位技术专家,对京东所有和618相关的关键技术系统进行了一次全面的梳理和总结,是京东技术体系的智慧结晶。 《决战618:探秘京东技术取胜之道》从前端的网站、移动入口到后端的结算、履约、物流、供应链等体系,系统展示了京东最新的技术成就。同时,也涵盖了京东正在充分运用大数据、人工智能等先进技术对所有技术体系架构进行整体......一起来看看 《决战618:探秘京东技术取胜之道》 这本书的介绍吧!