箭头函数
一.箭头函数的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;