专栏首页HTML5学堂JS实战开发经验!函数多参数传参技巧

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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解

    该项目来自于 Github 用户 Chalarangelo,目前已在 Github 上获得了 5000 多Star,精心收集了多达 48 个有用的 JavaSc...

    程序员宝库
  • 使用 JavaScript 实现机器学习和神经学网络

    英文:JeffHeaton 译文: 云+社区/白加黑大人 https://cloud.tencent.com/developer/article/103589...

    程序员宝库
  • 给初学者:JavaScript 的常见注意点

    作者: CarterLi 原文:https://segmentfault.com/a/1190000012730162 上篇说了一些 JS 中数组操作的常见误区...

    程序员宝库
  • JavaScript 背包问题详解

    作者: 司徒正美 原文:https://segmentfault.com/a/1190000012829866 ? 引子 打算好好学一下算法,先拿背包问题入手。...

    程序员宝库
  • web前端工程师入门须知,你全部了解吗?

    划重点 一名合格的web前端工程师必须得掌握HTML、CSS和JavaScript。只懂其中一个或两个还不行,你必须对这三门语言都很熟悉。也不是说必须对这三门语...

    企鹅号小编
  • 10 分钟理解 JS 引擎的执行机制

    作者: ziwei3749 原文:https://segmentfault.com/a/1190000012806637 首先,请牢记2点: JS是单线程语言 ...

    程序员宝库
  • 10 种最常见的 Javascript 错误

    英文:SKOWRONSKI 译文:elevenbeans elevenbeans.github.io/2018/02/05/top-10-javascript...

    程序员宝库
  • 15 个有趣的 JS 和 CSS 库

    作者:Danny Markov,译者:IT程序狮 译文:https://zhuanlan.zhihu.com/p/31321429 原文:https://tut...

    程序员宝库
  • JavaScript 深拷贝性能分析

    作者:justjavac 链接:https://segmentfault.com/a/1190000013107871 如何在 JavaScript 中拷贝一个...

    程序员宝库
  • 走近 Python (类比 JS)

    Python 是一门运用很广泛的语言,自动化脚本、爬虫,甚至在深度学习领域也都有 Python 的身影。作为一名前端开发者,也了解 ES6 中的很多特性借鉴自 ...

    程序员宝库

扫码关注云+社区

领取腾讯云代金券