基本不同 1.写法不同,箭头函数使用箭头定义,普通函数中没有
- .箭头函数都是匿名函数,普通函数可以有匿名函数,也可以有具体名函数,但是箭头函数都是匿名函数。
- 在普通函数中,this总是指向调用它的对象,如果用作构造函数,this指向创建的对象实例。箭头函数中没有this,声明时捕获其所在上下文的this供自己使用。所以箭头函数结合call(),apply()方法调用一个函数时,只传入一个参数对this没有影响。
var x='window x'
function fn1(){
console.log(this.x)
}
var fn2=()=>{
console.log(this.x)
}
var obj={
x:"obj x"
}
fn1.call(obj); // obj x
fn1.apply(obj); // obj x
fn2.call(obj); // window x
fn2.apply(obj); // window x
4.箭头函数不可以做构造函数,不能使用new 关键字,因为new关键字是调用函数对象的constructor属性,箭头函数中没有该属性,所以不能new
代码语言:javascript复制 function fn1(){
console.log('a')
}
var fn2=()=>{
console.log('b')
}
console.dir(fn1)
console.dir(fn2)
new fn1()
new fn2()
输出如下
image.png
5.箭头函数不绑定arguments,取而代之用rest参数…解决 6.箭头函数不可做Generator函数