1.什么是 arguments
arguments 是一个类数组对象,是传给一个函数的参数列表
function fun() {
console.log(arguments);
}
fun("a", 0, { name: "cao" });
输出:['a',0,{ foo: "Hello, arguments" }]
2.arguments方法
arguments是类数组,有length属性,但没有数组的方法
function fun1() {
let len = arguments.length;//3
let newArr = arguments.push(1);//报错没有这个方法
let newArr1 = arguments.splice(1);//报错没有这个方法
}
fun1("a", 0, { name: "cao" });
3.arguments 使用数组方法
1.转数组 Array.from(),[...arguments]
2.调用原型方法
3.1 转数组 Array.from(),[...arguments]
function fun2() {
let len = arguments.length;
let newArr = Array.from(arguments);
newArr.push(1);
console.log(newArr)
}
fun2("a", 0, { name: "cao" });
输出:['a',0,{ foo: "Hello, arguments" },1]
function fun2() {
let newArr = [...arguments];
newArr.push(1)
console.log(newArr)
}
fun2("a", 0, { name: "cao" });
输出:['a',0,{ foo: "Hello, arguments" },1]
3.2 调用原型方法
Array.prototype.slice.call(arguments)
[].slice.call(arguments)
function fun2() {
let len = arguments.length;
let newArr = Array.prototype.slice.call(arguments);//用的数组原型
newArr.push(1)
console.log(newArr)
}
fun2("a", 0, { name: "cao" });
输出:['a',0,{ foo: "Hello, arguments" },1]
function fun2() {
let len = arguments.length;
let newArr = [].slice.call(arguments);//用的数组
newArr.push(1);
console.log(newArr)
}
fun2("a", 0, { name: "cao" });
输出:['a',0,{ foo: "Hello, arguments" },1]
4.箭头函数没有arguments
使用剩余参数表示法...rest
箭头函数:1.没有this,this都根据作用域链来查找
2.不可以当作构造函数,也就是说,不可以使用new命令
3.不可以使用arguments对象,该对象在函数体内不存在。可以用Rest参数代替
let func = (...rest) => {
console.log(rest)
}
func(1, 2, 3)
输出:[1,2,3]