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
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux字符终端如何用鼠标移动一个红色矩形详解
- Linux中出现“No space left on device”错误的排查与解决方法
- 浏览器是如何调度进程和线程的?
- Linux shell利用sed如何批量更改文件名详解
- linux下通过xinetd服务管理 rsync 实现开机自启动
- linux实现自动删除最旧的几个文件详解
- 基于Ubuntu 16.04设置固定IP的方法教程
- CentOS添加和删除用户以及用户组的方法
- Linux下使用inode删除指定文件方法示例
- Apache虚拟目录配置及vue-cli反向代理的设置方法
- linux socket通讯获取本地的源端口号的实现方法
- 初识centos7与centos6的区别整理(内核、命令等)
- Apache下通过shell脚本提交网站404死链的方法
- centos查找已安装的jdk路径的方法
- CentOS7+apache+php7+mysql5.7配置教程详解