摘要:三参数规则函数定义时形式参数没有指定数据类型。函数对实际参数的个数没有进行检测。通常函数只保留靠前的参数,而省略靠后的参数。
一、参数概念
函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数。1.1 示例
上式的 x 就是square函数的 参数。每次运行的时候,需要提供这个值,否则得不到结果。
二、形式参数和实际参数 2.1 形式参数在函数定义时列出。 2.2 实际参数在函数调用时传递给函数真正的值。形式参数和实际参数是不同的变量,他们在内存中处于不同的位置,形式参数在函数运行结束时将被释放。
三、参数规则 3.1 函数定义时形式参数没有指定数据类型。 3.2 函数对实际参数没有进行类型检测。 3.3 函数对实际参数的个数没有进行检测。 四、默认参数如果函数在调用时未提供实际参数,参数会默认设置为: undefined
如果y已经定义 , y || 返回 y, 因为 y 是 true, 否则返回 0, 因为 undefined 为 false。
五、参数个数 5.1 实参比形参少(1)当调用函数时传递的实参比函数定义时的形参个数少,剩下的形参都将设置为 undefined 值。
(2)通常函数只保留靠前的参数,而省略靠后的参数。如果一定要省略靠前的参数,只有显式传入 undefined。
5.2 实参比形参多(1)如果函数调用时设置了过多的实际参数,剩下的实际参数没有方法直接获取,需要使用即将提到的arguments对象。
六、Arguments(实参)对象 6.1 定义(1)由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数。这就是arguments对象的由来。
(2)arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推。这个对象只有在函数体内部,才可以使用。
6.2 示例(1)
(2)
5.3 length属性(1)通过arguments对象的length属性,可以判断函数调用时传递的实际参数个数。
(2)注意
arguments对象的length属性显示实参的个数,函数的length属性显示形参的个数
(3)形参只是提供便利,但不是必需的
5.4 和数组的关系(1)需要注意的是,虽然arguments很像数组,但它是一个对象。数组专有的方法(比如slice和forEach),不能在arguments对象上直接使用。
(2)如果要让arguments对象使用数组方法,真正的解决方法是将arguments转为真正的数组。
(3)下面是两种常用的转换方法:slice方法和逐一填入新数组。
5.5 callee 属性(1)arguments对象有一个名为callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。
(2)下面是经典的阶乘函数
(3) 但是,上面这个函数的执行与函数名紧紧耦合在了一起,可以使用arguments.callee可以消除函数解耦
(4) 但在严格模式下,访问这个属性会抛出TypeError错误
(5)这时,可以使用具名的函数表达式
阅读更多
参考文章
函数
深入理解javascript函数系列第二篇——函数参数
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93982.html
摘要:每个函数表达式包括函数对象括号和传入的实参组成。和作用都是动态改变函数体内指向,只是接受参数形式不太一样。在定义函数时,形参指定为一个对象调用函数时,将整个对象传入函数,无需关心每个属性的顺序。 函数 JavaScript中,函数指只定义一次,但可以多次被多次执行或调用的一段JavaScript代码。与数组类似,JavaScript中函数是特殊的对象,拥有自身属性和方法 每个函数对象...
摘要:函数使用它们实参的值来计算返回值,称为该函数调用表达式的值。通常函数名的第一个字符为小写。在函数内部定义的变量,外部无法读取,称为局部变量。注意对于命令来说,局部变量只能在函数内部声明,在其他区块中声明,一律都是全局变量。 函数 1.函数简介 通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用。 ECMAScript中的函数使用function关键字来声明,后跟一组参数以及...
摘要:在客户端中,一些方法等也返回类数组对象。对象接下来重点讲讲对象。在函数体中,指代该函数的对象。下一篇文章深入之创建对象的多种方式以及优缺点深入系列深入系列目录地址。 JavaScript深入系列第十三篇,讲解类数组对象与对象的相似与差异以及arguments的注意要点 类数组对象 所谓的类数组对象: 拥有一个 length 属性和若干索引属性的对象 举个例子: var array = ...
摘要:参数引用函数的上下文,函数上下文来自于等面向对象语言,中的依赖于函数声明。没有重载函数没有签名,因为其参数是由包含零或多个值的数组来表示的。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。 1 函数参数 函数的实参和形参个数可以不等,之所以会这样,原因是 ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪...
摘要:参数引用函数的上下文,函数上下文来自于等面向对象语言,中的依赖于函数声明。没有重载函数没有签名,因为其参数是由包含零或多个值的数组来表示的。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。 1 函数参数 函数的实参和形参个数可以不等,之所以会这样,原因是 ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪...
阅读 2476·2021-11-23 09:51
阅读 534·2019-08-30 13:59
阅读 1838·2019-08-29 11:20
阅读 2542·2019-08-26 13:41
阅读 3251·2019-08-26 12:16
阅读 742·2019-08-26 10:59
阅读 3336·2019-08-26 10:14
阅读 608·2019-08-23 17:21