arguments对象

407 阅读1分钟

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]