箭头函数
用来简化函数定义语法的
形式:() =>{ }
- 当花括号中只有一句执行语句,且刚好是函数的返回值时,{}可以省略;
- 当形参只有一个时,()可以省略
- 例子:const result = item => item * 2;
箭头函数与this关键字
箭头函数不绑定this,箭头函数没有自己的this关键字
如果在箭头函数中使用this,则this指向箭头函数定义位置中的this
function fn(){
console.log(this);
return () => {
console.log(this); //箭头函数中的this指向fn的this
}
}
const obj = {name:'a'};
const result = fn.call(obj);
//调用fn,将fn函数中的this关键字指向了obj.可以理解成调用函数的对象变为obj。
//此处返回值为匿名函数
result(); //调用函数,结果指向obj
经典题目
由于say是一个箭头函数,而箭头函数的定义位置是obj,对象并没有作用域,所以箭头函数的this指向全局的window。由于window没有age属性,所以弹出undefined。