1、函数参数的默认值
在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。现在ES6可以为函数的参数添加默认值,简洁了许多。
ES5
function show(a,b){
b = b || 8;
return a*b;
}
console.log(show(8,8)); // ES6
let show = (a,b=8) => a*b;
console.log(show(8)); //
2、rest参数
ES6引入rest参数,形式为:“...变量名”,用于获取函数的多余参数,这样就不需要使用arguments对象了,rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
function add(...values){
let sum = 0;
for(var val of values){
sum +=val;
}
return sum;
}
console.log(add(5,5,5)); //
3、扩展运算符
扩展运算符是三个点,它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列。该运算符主要用于函数调用。
4、严格模式
从ES5开始,函数内部可以设定为严格模式。ES6做了一点修改,规定只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错。
5、name属性
函数的name属性,返回该函数的函数名。
6、箭头函数
ES6允许使用箭头(=>)定义函数
let add = (x,y) => x+y;
console.log(add(8,8)); let show = (a,b=8) => a*b;
console.log(show(8)); let message = (c,d) => {
return c*d;
console.log("我是其他内容");
}
console.log(message(5,5));
7、绑定this
箭头函数可以绑定this对象,大大减少了显式绑定this对象的写法(call、apply、bind)。但是,箭头函数并不适用于所有场合,所以ES7提出了“函数绑定”运算符,用来取代call、apply和bind的调用。函数绑定运算符是并排的两个双冒号(::),双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。
8、尾调用优化
尾调用是函数式编程的一个重要概念,本身非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。
function f(x){
return g(x);
}