8.3.1 可选参数

*:调用函数时,传入的参数少于函数声明时指定的参数个数,剩下的形参都将设置成undefined值。

a = a || []
一种习惯用法,可以用来过滤参数
*:一般将可选参数,放在参数列表的末端。


8.3.2 可变长的实参列表:实参对象

函数在被调用的时候,会自动生成一个类数组对象(不是真正数组,有length属性),它是实参对象的一个引用,标识符为arguments

function f(x){}
在上述表达式汇中,参数x,可以通过x标识符来调用,也可以通过arguments[0]来调用,等价。

实参对象可以让用户在调用函数的时候,操作任意数量的实参。

arguments的属性:

  • length : 实参长度
  • callee : 指代当前执行的函数
  • caller:指代调用当前正在执行的函数的函数….(太绕了,就是调用栈向上一层)

8.3.3 将对象属性做实参

问题:有的函数,需要的形参较多,调用时很难准确的记住参数的排列顺序。
解决方法:将参数,通过key-value的形式,传入一个对象,将对象作为实参。


8.3.4 实参类型

问题:js是弱类型语言,js函数在声明的时候,没有规定形参的类型,会引起一系列问题。
解决方法:在执行函数逻辑之前,对实参进行类型检查,针对不同类型的实参,进行相对应的操作。

《权威指南》笔记 -- 8.3 函数的实参和形参相关推荐

  1. HTML5与CSS3权威指南笔记案例1

    第1章 <!DOCTYPE html> <meta charset = "UTF-8"> <title> Search </title&g ...

  2. python全栈开发_day10_函数的实参和形参

    一:函数的实参和形参 实参是在调用函数时()出现的外界的实际的值 形参不能再函数外部直接使用 1)实参的两种形式 实参是调用函数时()中传入的参数 1.位置实参 def a(a):print(a)a( ...

  3. 《Cortex-M3 权威指南 笔记》

    因了命途中的你们,我才没有荒芜了青春. – 莫言 一.介绍 整个 MCU 只有Cortex-M3 处理器内核(中央处理单元(CPU))和调试器是ARM设计的,而存储器,外设,I/O以及其它功能块是芯片 ...

  4. Java性能优化权威指南--笔记

    出处:http://xiongpq.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 原文 ...

  5. netty权威指南笔记-以回车换行结尾的消息如何处理半包问题

    概述 TCP底层会发生粘包和拆包,这个是TCP的一个特性.为了减少网络数据传输的次数,TCP总是希望让网络数据到达一定量级的时候才将数据发送出去,而不是缓存区一有数据就马上发送数据. TCP底层会根据 ...

  6. python函数调用时的实参和形参之间传递_python 函数(实参与形参、传递参数)...

    函数 什么是函数?函数是带名字的代码块,用于完成具体的工作.写出一个函数后,就可以一直调用. 定义函数,函数的基本组成: 1.1 向函数传递参数 向函数中传递任意参数,这样打印出的结果就可以根据自己的 ...

  7. 学习正点原子讲解FreeRTOS中断管理心得和cortex-M3权威指南笔记

    1.一个任务恢复运行: (1)恢复一个任务的运行:将一个任务从挂起态恢复到就绪态,只有通过函数vTaskSuspend()设置为挂起态的任务才能使用vTaskResume()恢复,函数原型为void ...

  8. JS权威指南笔记之数据类型

    1.类型分为原始类型和对象. 2.原始类型有:数字类型,字符类型,布尔,和null undefind. 3.JavaScript里的函数都是真值. 4.函数和通过New关键字创建对象.这个样函数称为构 ...

  9. JavaScript权威指南笔记

    为什么80%的码农都做不了架构师?>>>    第二章   词法结构 JavaScript区分大小写:/html不区分大小写 JavaScript会忽略程序中标识(token)之间的 ...

最新文章

  1. 计算机视觉与深度学习 | Matlab实现单目视觉里程计基于SURF特征(代码类)
  2. php显示类别名,如何在single.php中仅显示父类别名称? (wordpress)
  3. jdk8 calendar_JDK 8的Calendar.Builder
  4. LeetCode 320. 列举单词的全部缩写(回溯/位运算)
  5. LeetCode 1053. 交换一次的先前排列
  6. 我面试几乎必问:你设计索引的原则是什么?怎么避免索引失效?
  7. js操作frameset frame 对象
  8. EPLAN教程——导出CAD如何快捷配置
  9. git rm 和 rm 的区别
  10. 彩灯控制器课程设计vhdl_基于VHDL的彩灯控制器设计与实现.doc
  11. RHEL7挂载本地yum源
  12. react native 获取验证码
  13. 区块链:剖析工作量证明
  14. 河北省教育厅计算机制度,河北省中小学计算机室规章制度.doc.docx
  15. QT5.5.0+VS2013(X64)+hidapi的USB继续深究之 QT的汉字显示
  16. linux sox录音时间控制,Linux 对音频万能处理的命令——SOX
  17. ## KEIL 5在MDK注册过程中LIC无法添加的问题解决:
  18. 医学统计学第六版笔记
  19. element-ui中的表格组件实现隔行换色
  20. 十三届蓝桥杯基础知识大全

热门文章

  1. Qt - 窗口移动拉伸
  2. bq3060电池控制芯片使用笔记
  3. [Python] 错误“IndentationError: unindent does not match any outer indentation level”是什么意思?...
  4. 【每天读一点英文】gnuhpc注释版:Arthur Clutton Brock - The Cardinal Virtue of Prose
  5. 国内主要遥感卫星数据介绍
  6. SQL语句(实用篇)
  7. C语言程序设计————学习知识归纳总结(四)
  8. Python分布式搜索引擎-10章elasticsearch入门
  9. Java 中 HttpURLConnection 与 PoLA 法则
  10. ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks