箭头函数和普通函数的区别(详解)

1.外观不同:

箭头函数有箭头定义,普通函数没有

// 普通函数
function func(){
  // code
}
// 箭头函数
let func=()=>{
  // code
}
 

2.箭头函数不能用于构造函数

普通函数可以用于构造函数,以此创建对象实例。 箭头函数不能即不能使用new

function Person(name,age){
   this.name=name;
   this.age=age;
}
let admin=new Person("打嗝小鱼",22);
console.log(admin.name);
console.log(admin.age);
 

代码运行结果如下

打嗝小鱼
22
 

3.箭头函数中this的指向不同

在普通函数中,this总是指向调用它的对象,如果用作构造函数,this指向创建的对象实例。 

1.箭头函数本身不创建this
也可以说箭头函数本身没有this,但是它在声明时可以捕获其所在上下文的this供自己使用。
注意:this一旦被捕获,就不再发生变化

var webName="成功捕获";
let func=()=>{
  console.log(this.webName);
}
func();
 

运行结果如下:

 成功捕获

2.结合call(),apply()方法使用
箭头函数结合call(),apply()方法调用一个函数时,只传入一个参数对this没有影响 

3.箭头函数不绑定arguments,取而代之用rest参数…解决
每一个普通函数调用后都具有一个arguments对象,用来存储实际传递的参数。但是箭头函数并没有此对象。

4.其他不同

(1).箭头函数不能Generator函数,不能使用yeild关键字。
(2).箭头函数不具有prototype原型对象。
(3).箭头函数不具有super。
(4).箭头函数不具有new.target。

5.总结

(1).箭头函数的 this 永远指向其上下文的 this ,任何方法都改变不了其指向,如 call() , bind() , apply()
(2).普通函数的this指向调用它的那个对象

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值