es6允许用箭头表示函数,称为箭头函数。
箭头函数看起来是语法上的变动,其实也影响了this的作用域。
我们可以通过在控制台输入输出查看箭头函数的作用。
如果我们换成箭头函数的话,等同于:
很简单。
如果只有一个参数,可以省略括号:
parameters => { statements } |
如果返回值仅仅只有一个表达式(expression), 还可以省略大括号:
parameters => expression // 等价于: function (parameters){ return expression; }
|
再一个好处是函数体内定义的this对象,是定义时所在的对象,不是使用时的对象。
eg:
传统函数的this很善变,作用域仅限与当前函数:
man = { name:'lee', init:function(){ var self = this; var printName = function() { console.log(self.name); } printName(); } } man.init();
箭头函数this取决于在哪儿定义,不可变:
man = { name:'lee', init:function(){ var printName = () => { console.log(this.name); } printName(); } } man.init();