首先我们要认识箭头函数
1.箭头函数是ES6新增的一种函数,箭头函数就相当于匿名函数
//箭头函数的定义方法
let fn = x => x * x
//相当于
let fn = function(x){
return x * x;
}
2.箭头函数是相当于匿名函数的一中,简化了匿名函数的定义,箭头函数有两种表达方式
//1.单语句,直接省略了{}和return
let fn = x => x * x;
//2.多语句,使用多语句时就不能缺少{}和return
let fn = x =>{
if(x > 0){
return x++
}else{
return x
}
}
3.当然以上是单个参数的使用方法,如果有多个参数则要使用()
//多个参数的定义方法
let fn = (x,y) => x * y
//相当于
let fn = function(x,y){
return x * y
}
4.箭头函数解决this指问题
//错误案例,this指向会指向Windows或者undefined,
var obj = {
age: 18,
getAge: function () {
var a = this.age; // 18
var fn = function () {
return new Date().getFullYear() - this.age; // this指向window或undefined
};
return fn();
}
};
5.现在,箭头函数完全修复了this的指向,this总是指向词法作用域,也就是外层调用者obj
var obj = {
age: 18,
getAge: function () {
var a = this.age; // 18
var fn = () => new Date().getFullYear() - this.age; // this指向obj对象
return fn();
}
};
obj.getAge(); // 2002