arguments,想说爱你不容易

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

什么是arguments

arguments是一个类数组

类数组

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

典型的类数组

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

形参与实参

什么是形参

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

形参的作用

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

函数的形参意义何在

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

什么是实参

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

arguments与参数的关系

arguments与实参

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

function h5course(name) {

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

运行结果:

'HTML5学堂'

'HTML5学堂'

内存空间问题

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

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

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

function h5course(name) {
    console.log(name);
    arguments[0] = '码匠';
    console.log(name);
}
h5course('HTML5学堂');

运行结果:

'HTML5学堂' '码匠'

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

运行结果:

'undefined'
'undefined'
'undefined'

2

arguments.callee

arguments.callee的作用

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

function h5course(name, age) {
    console.log(arguments.callee);
}
h5course('HTML5学堂');

运行结果:

function h5course(name, age) {
    console.log(arguments.callee);
}

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

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

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

function h5course(name, age) {
    console.log(arguments.length);
    console.log(arguments.callee.length);
}
h5course('HTML5学堂');

运行结果:

1

2

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2017-06-14

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏搞前端的李蚊子

Html5模拟通讯录人员排序(sen.js)

// JavaScript Document  var PY_Json_Str = ""; var PY_Str_1 = ""; var PY_Str_...

5886
来自专栏Petrichor的专栏

Dataset 列表:机器学习研究

In computer vision, face images have been used extensively to develop face recog...

1471
来自专栏marsggbo

Udacity并行计算课程 CS344 编程作业答案

832
来自专栏linux驱动个人学习

高通Audio中ASOC的machine驱动

ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的...

9704
来自专栏WOLFRAM

向日葵中的数学之美

1823
来自专栏前端儿

Web 前端颜色值--字体--使用,整理整理

颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义。对光源进行设置的最低值可以是 0(十六进制 00)。最高值是 2...

2272
来自专栏Pulsar-V

Save Camera Document

#pragma once #include "HCCamera.h" #include <time.h> #include <cstdio> #incl...

2818
来自专栏PPV课数据科学社区

【学习】七天搞定SAS(三):基本模块调用

搞定基本的函数之后,开始鼓捣SAS里面的模型。也就是说,要开始写PROC了。说实话,越学SAS,越觉得SAS像Stata...无论是从输出的样式,还是语法。好不...

2975
来自专栏WOLFRAM

错觉艺术的巅峰,错觉图形大师M.C. Escher的不可能方块的可能模型

1333
来自专栏MelonTeam专栏

Bitmap 源码阅读笔记

导语: Android 系统上的图片的处理,跟Bitmap 这个类脱不了关系,我们有必要去深入阅读里面的源码,以便在工作中能更好的处理Bitmap相关的问题...

2478

扫码关注云+社区