参数的默认值
传统方法:
function demo(m,n){
var name=m||"shasha";
var age=n||20;
}
传统做法实现原理是:如果运算符||左侧是true则直接返回左侧的,反之,返回右侧的;
不过有一个缺点,就是如果我想传进去0的话,那么就不行了,或者说传入的参数布尔值为false就不可以了,
ES6新方法:
function demo(m="shasha",n=20){
console.log(m,n);
}
demo() //shasha 20
demo("xiaoming",30) //xiaoming 30
如果函数有多个参数,但只有部分需要指定默认值,另一部分不需要的话,那么,设定默认值的参数一定要放在最后
新方法解决了传入参数是false就不可以的问题了,只有传入的参数是undefined或者不传才会使用默认值;哪怕传入的参数是0,null.....
rest参数
先看例子:
function sum(result,...values){
//打印values看看是什么
console.log(values);
//结果:[1,2,3,4]
//进行求和
values.forEach(function (value,index) {
//求和得到的结果存到result
result += value;
});
//打印出求和的结果看看
console.log(result);
//结果:10
}
//存储求和结果的变量res
var res = 0;
//调用sum函数
sum(res,1,2,3,5);
首先会看到...values(三个点+变量名),这是一种新写法,也就是rest参数,它的意思是在实参中除了第一个参数以外,剩余的参数都会被values获取到;
rest参数必须是函数的最后一个参数,后面不能再跟其他参数
错误写法:
function demo(a,...values,bb){......}
正确写法:
functiondemo(a,bb,...values){......}
扩展运算符
rest参数,它的表示法使用...(三个点),它除了用在rest参数中,还有其他用途,我们称这种表示法为扩展运算符
它一般结合数组使用,把数组的元素用逗号分隔开来,组成一个序列
function demo(a,b){
return a+b;
}
var arr=[1,2]
demo(...arr) //3
从这个案例我们就可以理解扩展运算符...的作用了,它可以将一个数组转成一个对应的参数数列。在实际开发中,你可以根据扩展运算符的作用,可以灵活运用,实现各种效果
箭头函数(=>)
传统写法:
var num=function demo(a){return a}
箭头函数:
var num=a=>a
简单吧!是不是有点不可思议!
第二种写法:a=>a; 这里的第一个a代表是传进去的参数,箭头=>后面的a表示函数体;
var num=(a,b)=>{return a+b}
num(1,2) //3
注意上面的参数和函数体部分,如果参数超过1个的话,需要用小括号()括起来,函数体语句超过1条的时候,需要用大括号{ }括起来
箭头函数的最大作用就是简化函数,大大地减少代码量
例如对一个数组求和:
传统写法:
var num=0;
[1,2,3,4,5,6].forEach(function(value){return num+=value;})
箭头函数:
var num=0;
[1,2,3,4,5,6].forEach(value=>num+=value)
确实省了很多代码!!!