javascript es6 箭头函数

1、箭头函数示例

let add = (a,b) => a + b         //没有语句块时,默认作为返回值

add(1,2);

var multi = (a,b) => {return a * b;}    //在语句块中返回值 

multi(1,2);

2、如果箭头表达式仅仅是简化函数的命名,为什么要改变原来习惯而去使用?

箭头函数内部没有constructor方法,也没有prototype,所以不支持new操作。但是它对this的处理与一般普通函数不一样,箭头函数的this始终指向函数定义时的this,而非执行时。

 

3、箭头对this的处理与一般普通函数不一样,箭头函数的this始终指向函数定义时的this,而非执行时。实例验证

/*this会发生改变*/
function es6() {
    var obj = {
        x: 1,
        func: function () {
            console.log(this.x);
        }
        test: function () {
            setTimeout(function () {
                alert(this); //指针转移:setTimeout由js调用所以this window对象
                this.func(); //报错:func没定义
            }, 1000);
        }
    }
}

/*改为箭头函数,避免this发生变化,让this始终指向函数定义*/
function upgradeEs6() {
    var obj = {
        x: 1,
        func: function () {
            console.log(this.x);
        }
        test: function () {
            setTimeout(() => {
                alert(this);
                this.func();
            }, 1000);
        }
    }
}

 

posted @ 2018-07-19 00:05  N神3  阅读(633)  评论(0编辑  收藏  举报