arguments和rest的区别

ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments

arguments

  • 箭头函数没有arguments
  • arguments包含所有参数
  • arguments获取实参返回伪数组,不能使用数组方法

rest

  • rest是参数的表现形式,需要结合扩展运算符(...),语法: ...变量名
  • rest参数只包括那些没有给出名称的参数,也叫剩余参数
  • rest获取参数返回数组,可以使用数组方法
  • rest参数必须放到形参最后
//ES5 arguments获取实参方式,返回伪数组
function fn(){
    console.log(arguments);
}
fn('a','b','c');


//rest获取实参,返回数组
function fn(...lyc){
    console.log(lyc);
}
fn('a','b','c');

//rest参数必须要放到参数最后
function fn(a,b,...lyc){
    console.log(a);     //1
    console.log(b);     //2
    console.log(lyc);  //3,4,5,6
}
fn(1,2,3,4,5,6);

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中,`arguments` 是一个类数组对象,用于保存函数调用时传入的参数。它可以在函数内部被访问和操作,也可以被用于实现一些高级的函数功能。 下面是一些 `arguments` 的用法和作用: 1. 访问函数参数 `arguments` 对象可以用于访问函数调用时传入的参数,无论是否在函数定义时指定了参数名。例如: ```javascript function sum() { let result = 0; for (let i = 0; i < arguments.length; i++) { result += arguments[i]; } return result; } console.log(sum(1, 2, 3)); // 输出 6 ``` 在上面的例子中,函数 `sum` 没有指定参数名,但可以通过 `arguments` 对象访问到所有传入的参数。 2. 实现函数重载 `arguments` 对象可以用于实现函数重载,即根据传入参数的不同,调用不同的函数。例如: ```javascript function add(a, b) { if (arguments.length === 1) { return a + 10; } else { return a + b; } } console.log(add(1, 2)); // 输出 3 console.log(add(1)); // 输出 11 ``` 在上面的例子中,函数 `add` 根据 `arguments` 对象的长度判断传入了几个参数,从而执行不同的操作。 3. 操作函数参数 `arguments` 对象可以用于操作函数参数,例如通过对 `arguments` 对象的操作来实现参数的去重、排序等功能。例如: ```javascript function unique() { let result = []; for (let i = 0; i < arguments.length; i++) { if (!result.includes(arguments[i])) { result.push(arguments[i]); } } return result; } console.log(unique(1, 2, 3, 2, 1)); // 输出 [1, 2, 3] ``` 在上面的例子中,函数 `unique` 使用 `arguments` 对象来遍历所有传入的参数,并通过 `result` 数组来保存不重复的参数。 总之,`arguments` 对象在 JavaScript 中有很多用途,可以用于访问函数参数、实现函数重载、操作函数参数等。但需要注意的是,在 ES6 中,推荐使用 rest 参数代替 `arguments` 对象来获取函数参数,因为 rest 参数更加灵活和易于理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值