ES6入门——函数的扩展

1、函数参数的默认值

在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。现在ES6可以为函数的参数添加默认值,简洁了许多。

ES5
function show(a,b){
    b = b || 8;
    return a*b;
}
console.log(show(8,8)); //64

ES6
let show = (a,b=8) => a*b;
console.log(show(8)); //64

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

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);  
}
原文地址:https://www.cnblogs.com/fengxiongZz/p/8003744.html