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 条评论
登录 后参与评论

相关文章

来自专栏Phoenix的Android之旅

重构 - 你为什么要对参数赋值?

对于学过多门语言的开发者来说,应该都明白在不同语言中对参数赋值有着不同的意义, 总的来说参数有值传递和引用传递两种, 而在Java中只有值传递的概念。

782
来自专栏专注 Java 基础分享

Java 内部类的意义及应用

众所周知,我们的 C++ 程序语言是多继承制的,而多继承明显的好处就是,相对而言只需要写较少的代码即可完成一个类的定义,因为我们可以通过继承其它类来获取别人的实...

3194
来自专栏移动端开发

Swift 面向对象解析(一)

面向对象总体概括: Swift 不仅能够面向过程编程,也能够面向对象编程(OOP)。面向对象其实就是“以对象为核心”,把我们的客观世界想着是由一个个对象组...

2057
来自专栏java一日一条

Java 回顾 ( Revisiting Java )

最近在看一些工程代码,于是看了看设计模式,看设计模式之前发现Java是先修知识,又重新补了一遍Java,温故知新,获得一些新的体会。 本文不打算作为“Java知...

762
来自专栏企鹅号快讯

Java初学者的30个常见问题

1.2 基本数据类型 Q. 为什么 -0/3 结果是 0,而 -0.0/3.0 结果是 -0.0?(注意后边的结果0带负号) A. 在Java里,整数是用补码...

1805
来自专栏PhpZendo

震惊 php empty 函数判断结果为空,但实际值却为非空

最近我在一个项目中使用 empty 时获取到了一些意料之外的结果。下面是我处理后的调试记录,在这里与你分享了。

991
来自专栏Python中文社区

Python内嵌作用域与函数闭包

前情回顾,上一节我们介绍了变量的LEGB索引机制:对一个变量,首先在本地(函数内)查找;之后查找嵌套函数的本地作用域,然后再是查找当前的全局作用域。

1234
来自专栏JMCui

Final 关键字

1、涵义     最一般的意思就是声明 “这个东西不能改变”。之所以要禁止改变,可能是考虑到两方面的因素:设计或效率。 final 关键字可以用来修饰变量、方法...

3536
来自专栏iKcamp

翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 3 章:管理函数的输入

原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 第 3 章:管理函数的输入(In...

2827
来自专栏机器学习从入门到成神

《你不知道的JavaScript》读书笔记(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

661

扫码关注云+社区