ES6语法学习笔记之函数默认参数

133 阅读2分钟

函数传参可以方便的设置默认值

以往设置默认值是这样的:

                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);