箭头函数

一.箭头函数的this是静态的,始终指向在函数声明时所在作用域下的this值

window.name = 'Window上的name'
const Name = {
    name:'对象Name里的name'
}


function fn(){
    console.log(this.name)
}
let fn2 = ()=>{
    console.log(this.name)
}

fn();
fn2();

结果:
Window上的name
Window上的name

//通过call更改this的指向为对象Name

fn.call(Name)
fn2.call(Name)

结果:
对象Name里的name
Window上的name

由其可见,普通函数的this发生了变化,但是箭头函数的this依旧是Window,不会发生变化

二.不能作为构造实例化函数

function fn (){
    console.log('普通函数fn')
}

let fn2 = ()=>{
    console.log('箭头函数fn2')
}

let fn3 = new fn; //这是可以的
let fn4 = new fn2; //直接报错

三.不能使用arguments变量

四.箭头函数的简写

1.当形参只有一个的时候,可以省略小括号

    let fn = (n)=>{
    return n+n;
    }
    //简写
    let fn = n =>{
    return n+n;
    }

2.当函数语句只有一条的时候,可以省略花括号,此时必须省略return,因为此时的结果会自动作为返回值输出

    let fn = (n)=>{
    return n+n;
    }
    //简写
    let fn = (n) => n+n;