函数传参可以方便的设置默认值
以往设置默认值是这样的:
function show1(a,b){
a = a || '欢迎';//调用时如果传参,就用传进来的,如果没有,那就用默认的,比如这里的‘欢迎‘
b = b || 'mmr';
console.log(a,b);
}
show1('welcome','牧马人');//welcome 牧马人
show1('welcome');//welcome mmr
show1('','牧马人');//欢迎 牧马人
复制代码
现在利用解构赋值传默认参数:
function shows({t,f=0}){
console.log(t,f);
};
shows({t:1});//只传第一个参数
复制代码
function show3({x=0,y=0}={}){
console.log(x,y);
}
show3();//都不传
复制代码
函数传默认参数时用的变量,不能在函数里再用let const声明
function show(a=18){
let a=101;
console.log(a);
};
show();//结果会报错,因为传参时,a已经被定义,不能再次用let const声明
复制代码
...扩展运算符、reset运算符
...扩展运算符可以把数组展开,直接展示成多个内容
let arr = ['apple','banana','orange'];
console.log(arr);//打印整个数组
console.log(...arr);//...可以把数组展开,直接展示其内容
复制代码
function showdiu(f,g,s){
console.log(f,g,s);
}
showdiu(...[1,3,5]);
复制代码
...扩展运算符还可以把普通的一串内容,转换成数组
function show(a,b){
console.log(a,b);
}
show(1,2,3,4,5);//这里真正被接收到的参数只有一个,因此结果是1 2
复制代码
function shows(...c){//这一步把普通一串内容转化成了数组
console.log(c);
};
shows(1,2,3,4,5);
复制代码
其他应用场景:给数组排序 以前是这样的:
function showss(){
let d=Array.prototype.slice.call(arguments);
console.log(d);
// return 1;
return d.sort();
}
复制代码
或者这样的:
function showtest(e){
return e.sort();
}
console.log(showtest([1,4,5,3,6]));
复制代码
用ES6语法是这样的:
function showsort(...ss){
return ss.sort();
}
console.log(showsort(1,9,8,3,2));
复制代码
...还有一个名字叫剩余运算符,原因参考如下案例:
function showsy(u,w,...k){
console.log(u,w);
console.log(k);
}
showsy(1,2,4,5,6);//1 2 [4,5,6]
复制代码
数据映射:
let arr1 = [1,2,3,4,5];
let arr2 = [...arr1];//推荐写法
let arr3 = Array.from(arr1);//IE11 及其更早的浏览器版本不支持 from 方法
console.log(arr1,arr2);
console.log(arr3);
复制代码