JS中的普通函数与箭头函数
箭头函数是ES6出现的新的函数形式
在ES6前,JS定义函数一般都是这样子定义:
function fn(){
//函数
}
fn();//调用函数
推出ES6后,JS定义函数可以使用箭头函数:
let fn=()=>{
//函数
}
fn();//调用函数
JS的普通函数与箭头函数很明显的区别就是 写法 上的区别。
除了写法上的区别,还有this指向的区别。
普通函数:哪个对象调用普通函数,普通函数就指向该对象。
箭头函数:箭头函数的this是继承的上一层对象。
普通函数:
function fn(){
console.log(this);
}
fn();//全局下调用函数,函数this指向window对象
let obj={
fn(){
console.log(this);
}
}
obj.fn();//obj对象调用函数,函数this指向obj对象
箭头函数:
let fn=()=>{
console.log(this);
}
fn();//this继承的是 上一层对象——也就window对象,所以输出window
let obj={
fn:()=>{
console.log(this);
}
}
obj.fn();//this继承的是obj对象,obj的this指向window,所以也是输出window