箭头函数和普通函数有什么区别

本文深入探讨了JavaScript中箭头函数的八大关键特性,包括其无法作为构造函数使用、不绑定arguments、如何捕获this值、在不同上下文中this的表现、无法使用call和apply改变this、缺乏函数原型、不能作为Generator函数以及语法上的限制。通过具体示例,清晰解释了这些特性的运作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 1.箭头函数相当于匿名函数,是不能作为构造函数的,不能使用new
  • 2.箭头函数不绑定arguments,取而代之用rest参数…解决
  • 3.箭头函数会捕获其所在上下文的this值,作为自己的this值。即箭头函数的作用域会继承自外围的作用域。
  • 4.箭头函数当方法使用的时候没有定义this的绑定
obj = {
  a:10,
  b:()=>{
    console.log(this.a);//undefined
    console.log(this);//window
  },
  c:function(){
    return ()=>{
      console.log(this.a);//10
    }
  }
}
obj.b();
obj.c();

b箭头函数运行时的外围环境是全局作用域,this指向了window 
c内部返回的箭头函数运行在c函数内部,其外围的作用域是外部函数的作用域,外部函数的this值指向调用它的obj,所以输出的值是10

  • 5.使用call()和apply()调用 

通过call()或者apply()调用一个函数时,只是传入参数而已,对this并没有影响。

var obj = {
  a:10,
  b:function(n){
   var f = (v) => v + this.a;
   var c = {a:20};
   return f.call(c,n);
 }
}
console.log(obj.b(1));//11
  • 6.箭头函数没有函数原型
var a = ()=>{
  return 1;
}
function b(){
  return 2;
}
console.log(a.prototype);//undefined;
console.log(b.prototype);//object{...}

 

  • 7.箭头函数不能当做Generator函数,不能使用yield关键字 
  • 8.箭头函数不能换行
var a = () 
          => 1;//SyntaxError:Unexpected token
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值