一、ES6里面对函数的参数做了一些改变
- 参数扩展/数组展开
- 默认参数
二、参数扩展/展开
所谓的参数扩展就是用来进行剩余参数的收集,还能够用于展开数组。
1、生于参数的收集
看如下的函数:
function show(a,b){
console.log(a,b);
}
show(12,15);
我们给show函数了两个参数,我们给他传参时传了两个。如果传两个以上的参数,前两个可以接到,后面的就接不到,而且没有警告提示和错误提示。那么我们该怎么解决呢?
function show(a,b,...args){
console.log(a,b);
console.log(args);
}
show(12,15,14,17);
此时,前面的两个数12,15分别放在a和b里面,然后后面的多出来的参数就直接全部放入args里面,存在args这个数组里面了。
注意:
如果我想让a,b分别接前两个数,c接最后一个数。如下的写法是错误的,此时会报这样的错误:Uncaught SyntaxError: Rest parameter must be last formal parameter。所以不能这样写!也就是说args智能放在最后。
function show(a,b,...args,c){
console.log(a,b);
console.log(args);
}
show(12,15,14,17,5.10);
2、数组展开
例一:
//方式一
function show(a,b,c){
console.log(a);
console.log(b);
console.log(c);
}
show(1,2,3);
//方式二:
let arr = [1,2,3];
function show(a,b,c){
console.log(a);
console.log(b);
console.log(c);
}
show(...arr);
//上面的两种方式完全没有区别,完全一样。
例二:
let arr1 = [1,2,3];
let arr2 = [5,6,7];
let arr = [...arr1,...arr2];
console.log(arr); //[1,2,3,4,5,6]
例三:
function show(...args){
fn(...args)
}
function fn(a,b){
console.log(a+b);
}
show(12,5);
三、默认参数
例一:
function show(a,b=5,c=3){ //默认b=5,c=3;
console.log(a,b,c);
}
show(1); //输出为1,5,3
show(2,6,8); //输出为2,6,8
show(2,6,8,0); //输出为2,6,8