箭头函数
为什么:
让this始终指向包含它的对象
是什么:
箭头左边是参数,右边是函数体
只包含一个表达式,连{ ... }和return都省略掉了。
还有一种可以包含多条语句,这时候就不能省略{ ... }和return:
var fn = x => x * x;
x => {
if (x > 0) {
return x * x;
}
else {
return - x * x;
}
}
this
箭头函数看上去是匿名函数的一种简写,
但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。
this默认指向全局变量或undefined(strict模式下的报错),只有对象调用时,才让this指向对象
var obj = {
birth: 1990,
getAge: function () {
var b = this.birth; // 1990
var fn = function () {
return new Date().getFullYear() - this.birth; // this指向window或undefined
};
return fn();
}
};
var obj = {
birth: 1990,
getAge: function () {
var b = this.birth; // 1990
var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象
return fn();
}
};