关键知识点
箭头函数不绑定this,箭头函数没有自己的this关键字
如果在箭头函数中使用this,this关键字将指向箭头函数被定义位置中的this
注意:箭头函数里this指向的是定义时所在的对象,而不是使用时所在的对象
例子
function fn() {
console.log(this); //输出obj对象
return() => {
console.log(this);
} //指向箭头函数被定义区域的this
// 也就是:指向fn的this
}
const obj = {name:'alieen Gu'};
fn.call(obj); //将fn函数内部的this指向obj对象,同时执行fn()函数
const resFn = fn.call(obj); //用resFn 来接住fn函数执行的返回结果,也就是上面用箭头函数语法写的匿名函数
resFn(); //调用上面用箭头函数语法写的匿名函数
//看看输出的this是谁,结果还是 {name:'alieen Gu'}
箭头函数面试题
var obj = {
age:18,
name: 'alieen Gu',
ski:() => {
alert(this.age); //obj对象不产生作用域
//这里的箭头函数实际上被定义在了全局作用域下,window下面没有age,
//所以输出的是undefined
}
}
//注:作用域分为:1、全局作用域 2、函数作用域
//ES6新增了块级作用域