arguments和rest参数

argument是ES5获取参数方式,rest是ES6获取参数方式,用来代替arguments

argument:是一个类数组对象,包含调用函数时传入的所有参数。这个对象在箭头函数里时用不了的,只有以function关键字定义的函数才会有。arguments 对象其实还有一个 callee 属性,是一个指向 arguments 对象所在函数的指针。

在严格模式下访问arguments.callee会报错;es5也定义了arguments.caller,但在严格模式下访问它会报错,在非严格模式下则始终是undefined。这是为了区分arguments.caller和caller

比如
function factorial(num) { 
 if (num <= 1) { 
 return 1; 
 } else { 
 return num * factorial(num - 1); 
 } 
}

/*
阶乘函数一般定义成递归调用的,就像上面这个例子一样。只要给函数一个名称,而且这个名称不
会变,这样定义就没有问题。但是,这个函数要正确执行就必须保证函数名是 factorial,从而导致
了紧密耦合。使用 arguments.callee 就可以让函数逻辑与函数名解耦:*/


function factorial(num) { 
 if (num <= 1) { 
 return 1; 
 } else { 
 return num * arguments.callee(num - 1); 
 } 
}

例子1,argument方式

 例子2,rest方式(注意看结果是数组

 需要注意的是,rest参数必须要放到参数最后

 扩展

rest参数的   ... 跟扩展运算符的符号是一样的,用法不同,如下

 rest的...在函数声明的形参位置,扩展运算符在调用的实参里

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值