前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 函数参数-Arguments(实参)对象

JavaScript 函数参数-Arguments(实参)对象

作者头像
WEBING
发布2019-02-26 10:40:33
1.2K0
发布2019-02-26 10:40:33
举报
文章被收录于专栏:前端の进行时前端の进行时

一、参数概念

函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数。

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)

Arguments对象
Arguments对象

(2)

Arguments对象
Arguments对象

5.3 length属性

(1)通过arguments对象的length属性,可以判断函数调用时传递的实际参数个数

length属性
length属性

(2)注意

length属性
length属性

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函数系列第二篇——函数参数

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、参数概念
    • 1.1 示例
    • 二、形式参数和实际参数
      • 2.1 形式参数在函数定义时列出。
        • 2.2 实际参数在函数调用时传递给函数真正的值。
        • 三、参数规则
          • 3.1 函数定义时形式参数没有指定数据类型。
            • 3.2 函数对实际参数没有进行类型检测。
              • 3.3 函数对实际参数的个数没有进行检测。
              • 四、默认参数
              • 五、参数个数
                • 5.1 实参比形参少
                  • 5.2 实参比形参多
                  • 六、Arguments(实参)对象
                    • 6.1 定义
                      • 6.2 示例
                        • 5.3 length属性
                          • 5.4 和数组的关系
                            • 5.5 callee 属性
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档