es6之箭头函数

箭头函数的写法:

箭头函数至关于匿名函数,它的写法是:函数

x => x*x

它至关于this

fucntion (x){
    return x*x;
}

能够看到,只有一条语句的箭头函数省略了括号与return。若是含有多条表达式,那么就不能省略{}returnrest

x => {
    if(x>0){
        return x*x;
    }else{
        return -x*x;
    }
    
}

若是函数多个参数,那么小括号()也不能省略:code

// 两个参数:
(x, y) => x * x + y * y

// 无参数:
() => 3.14

// 可变参数:
(x, y, ...rest) => {
    var i, sum = x + y;
    for (i=0; i<rest.length; i++) {
        sum += rest[i];
    }
    return sum;
}

若是要返回一个表达式的话,这样写会报错:对象

x => {foo.x}

由于和函数体的{...}有冲突,因此要改成:作用域

x => ({foo.x})

this指向的修复

不使用箭头函数的时候,在对象的方法中使用this须要使用hack写法:get

var obj = {
    birth: 1990,
    getAge: function () {
        var _this = this;
        var fn = function () {
            return new Date().getFullYear() - _this.birth; // this指向window或undefined
        };
        return fn();
    }
};

如今,箭头函数彻底修复了this的指向,this老是指向词法做用域,也就是外层调用者objio

var obj = {
    birth: 1990,
    getAge: function () {
        var b = this.birth; // 1990
        var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象
        return fn();
    }
};
obj.getAge(); // 25
相关文章
相关标签/搜索