前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >arguments,想说爱你不容易

arguments,想说爱你不容易

作者头像
HTML5学堂
发布2018-03-13 16:39:22
7260
发布2018-03-13 16:39:22
举报
文章被收录于专栏:HTML5学堂HTML5学堂

HTML5学堂-码匠:arguments是关于函数参数的一个知识点,也是很多企业面试时的“必考点”,arguments和形参有何不同?如何去检测实参或形参的长度?一起来看看吧!

什么是arguments

arguments是一个类数组

类数组

类数组:拥有length属性,其它属性(索引)为非负整数,但并不具有数组的方法。

典型的类数组

典型的类数组:DOM节点列表(通过DOM操作获取的标签列表)、arguments。

形参与实参

什么是形参

形参:表示的是“形式参数”,是在定义函数名和函数体时使用的参数,用于接收调用该函数时传递的参数。

形参的作用

实现主调函数与被调函数之间的联系。

函数的形参意义何在

将“函数所处理的数据”,“影响函数功能的因素”或“函数处理的结果”作为形参。主要目的在于——提升函数的复用性

什么是实参

表示的是“实际参数”,是在函数调用时,传入函数的内容。实参可以是常量、变量、表达式、函数等, 但是,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值。

arguments与参数的关系

arguments与实参

arguments对象的长度是由实参个数决定的(不是形参个数)。换言之,arguments接收到的是实参的值,而形参是函数内部“重新开辟”内存空间存储的变量(也就是局部变量)。

代码语言:javascript
复制
function h5course(name) {

    console.log(name);
    console.log(arguments[0]);
}
h5course('HTML5学堂');

运行结果:

'HTML5学堂'

'HTML5学堂'

内存空间问题

形参的空间与arguments对象内存空间并不重叠。

如果形参和arguments都存在,则这两者值是同步的;

如果形参和arguments当中,有其中之一无值,则此值不会得以同步。

代码语言:javascript
复制
function h5course(name) {
    console.log(name);
    arguments[0] = '码匠';
    console.log(name);
}
h5course('HTML5学堂');

运行结果:

'HTML5学堂' '码匠'

代码语言:javascript
复制

function h5course(name, age) {
    console.log(age);
    console.log(arguments[1]);
    arguments[1] = 2;
    console.log(age);
    console.log(arguments[1]);
}
h5course('HTML5学堂');

运行结果:

代码语言:javascript
复制
'undefined'
'undefined'
'undefined'

2

arguments.callee

arguments.callee的作用

arguments.callee 属性表示当前正在执行的函数。

代码语言:javascript
复制
function h5course(name, age) {
    console.log(arguments.callee);
}
h5course('HTML5学堂');

运行结果:

代码语言:javascript
复制
function h5course(name, age) {
    console.log(arguments.callee);
}

获取形参与实参的长度(数量)

使用arguments.callee.length检测形参的数量(长度);

使用arguments.length检测实参的数量(长度)。

代码语言:javascript
复制
function h5course(name, age) {
    console.log(arguments.length);
    console.log(arguments.callee.length);
}
h5course('HTML5学堂');

运行结果:

1

2

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 懂点君 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档