默认参数arguments和可变参数
2023-03-23 本文已影响0人
扶得一人醉如苏沐晨
一、arguments 对象
1.1、特点
- arguments是函数中又一个隐含参数(另一个是this)
- arguments用来存储函数的实参
- 无论用户是否定义形参,实参都会存储到arguments对象中
- 可以通过该对象直接访问实参
<script>
function fn () {
console.log(arguments);
}
fn(1, 2, 3)
</script>
打印结果
- arguments是一个类数组对象 (伪数组)和数组相似,
- 可以通过索引来读取元素,也可以通过for循环变量
<script>
function fn () {
for (let item of arguments) {
console.log(item);
}
}
fn(1, 2, 3)
</script>
打印结果
- 但是它不是一个数组对象,不能调用forEach、map、reduce等高阶函数循环它
<script>
function fn () {
arguments.forEach(element => {
console.log(element);
});
}
fn(1, 2, 3)
</script>
报错
1.2、常用
求所有参数和
<script>
function fn () {
let result = 0;
for (let item of arguments) {
result += item;
}
console.log(result); //6
}
fn(1, 2, 3)
</script>
二、可变参数
- 可变参数,在定义函数时可以将参数指定为可变参数
- 可变参数可以接收任意数量实参,并将他们统一存储到一个
数组中返回
- 可变参数的作用和arguments基本是一致,但是也具有一些不同点:
可变参数的名字可以自己指定
可变参数就是一个真实数组
在函数中使用...xxx
可以定义一个可变参数
<script>
function fn (...arg) {
let result = arg.reduce((pre, cur) => pre + cur, 0);
console.log(result); //6
}
fn(1, 2, 3)
</script>
- 可变参数可以配合其他参数一起使用
<script>
function fn (a, b, ...arg) {
console.log(a, b, arg);
}
fn(1, 2, 3, 4, 5)
</script>
打印结果