JS实战开发经验!函数多参数传参技巧

HTML5学堂-码匠:掌握JavaScript代码的你,一定编写封装过函数,为了提升函数的控制性,必不可少的就是参数,必选可选的一大堆参数罗列出来,函数调用貌似变得麻烦起来~~~

Tips:

必选参数指的是必须要传入实参的参数;

可选参数在函数中有默认值,如有传入实参,则取实参的值,如果没有传入实参,则使用默认值。

函数的众多参数问题

当一个函数既有必选参数,又有可选参数,在定义函数时,我们可能采取的方式是:无论参数是可选参数还是必选参数,都将参数罗列下来(通常按照先必选再可选的顺序)

但是这样的罗列方法,会导致一些问题的产生!

举例来说:有一个功能函数h5course,name和domain为其必选参数,而minAPP和book为其可选参数,而我们如此定义函数:

此时,调用函数,需要传入name、domain、book这三个参数,那么,问题来了!

由于在函数定义当中,book的参数位置位于minApp参数之后,在调用函数时,如果希望为book这个参数传入值,就必须按照如下方式进行书写:

h5course('name参数值', 'domain参数值', '', 'book参数值');

不难发现,当前第三个参数的处理就变得麻烦起来。于是乎,可能很多人会在函数中通过添加if判断,来进行参数控制 ——

此时仍然存在这样两个问题:

第一,函数的调用者必须要了解函数内部的参数判断方式,才能够正确书写“不需要的可选参数”

第二,在调用多个可选参数的函数时,调用代码会变得很麻烦(当然你可以为函数添加注释,降低使用时的难度)

更好的函数参数书写方法!

面对如上的这些问题,下面这种方法,你值得拥有!

1 用对象替代掉原有的单个参数传递方式

2 函数内部使用arguments替换原有的形参

3 利用for-in循环,修改可选参数的默认值

一起来用此方法调整一下h5course函数

在此段代码当中,传入了三个参数

for-in循环当中,为defaultValue添加了name和domain的值,并修改了minApp的内容

函数调用时,参数的处理会变得更方便简单,但是也要注意,为了让使用者清晰了解哪些参数是必须的,建议在函数前面添加合理注释!

来个“智力”测试?

生活艰辛,代码不易,但,不要忘记微笑!

请只考虑水龙头流水较慢的情况

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2017-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Fundebug

代码面试需要知道的8种数据结构(附面试题及答案链接)

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

836
来自专栏magicsoar

Effective Modern C++翻译(7)-条款6:当auto推导出意外的类型时,使用显式的类型初始化语义

条款6:当auto推导出意外的类型时,使用显式的类型初始化语义 条款5解释了使用auto来声明变量比使用精确的类型声明多了了很多的技术优势,但有的时候,当你想要...

17110
来自专栏python百例

83-OOP基础

为玩具厂创建一个玩具熊类。 玩具熊有名字、尺寸、颜色这些数据属性;还有唱歌、说话的行为。

765
来自专栏我是攻城师

数据结构的基本概念

2874
来自专栏算法channel

面试被问到动态内存分配时需要注意哪些坑,该怎么回答?

面试时,面试官问我们Java,Python这种语言那是必须要准确回答的,很多系统如果对性能要求高的话,底层一般会用到C/C++语言,因此被问到底层语言的相关知识...

973
来自专栏AI派

Numpy 修炼之道(1) —— 什么是 Numpy

简单来说,Numpy 是 Python 的一个科学计算包,包含了多维数组以及多维数组的操作。

2824
来自专栏青玉伏案

PHP精选数组函数

编程怎么能少的了数组呢,以下是学习PHP时常用的数组处理函数。在编程中要遵循一个原则就是DRY(Don`t Repeat Yourself)原则,PHP中有大...

1808
来自专栏C/C++基础

打印1到最大的n位数

这道题是面试过可能会遇到的手写代码题。如n为3时,那么需要打印1到999。需要注意的是当输入的n很大时,最大的n位数是不能通过int或者long long in...

511
来自专栏企鹅号快讯

verilog编程要素整理时刻牢记

verilog编程建议 1、不使用初始化语句; 2、不使用延时语句; 3、不使用循环次数不确定的语句,如:forever,while等; 4、尽量采用同步方式设...

1758
来自专栏程序员互动联盟

【编程基础】聊聊C语言-我的地盘我做主

上一篇我们讲了变量的寿命,知道了C语言的变量是有生命周期的。到了一定的时机它们所占用的内存就会被释放。接下来我们讲讲这些变量都存储在哪些地盘上以及它们各自的势力...

3095

扫描关注云+社区