箭头函数和普通函数的区别

箭头函数是普通函数的简写,但它不具备很多函数的特性;箭头函数不能使用arguments(类数组对象,可以在函数内部访问arguments对象,从中取得传进来的每个参数值)、super和new.target,也不能用作构造函数,此外,箭头函数也没有prototype属性。

  • arguments关键字访问
// arguments关键字访问
function foo() {
  console.log(arguments[0], arguments[1]);
}
foo(3, 6);//3 6

let bar = () => {
  console.log(arguments[0], arguments[1]);
}
bar(3, 6);//ReferenceError: arguments is not defined
  • this指向

this指向问题,箭头函数指向它定义时所在的对象,而不是调用时所用的对象 <箭头函数本身没有this,但是它在声明时,可以捕获其所在上下文的this供自己使用>

//箭头函数在全局作用域声明,所以是在全局作用域中捕获this的,this指向window对象
var name = "jake";
let fn = () => {
  console.log(this.name);
}
fn();//jake
/*
箭头函数是在 fn() 用作构造函数,使用new调用fn()函数之后,此函数作用域中的this指向创建的实例化对象,箭头函数此时被声明,捕获到这个this
(在哪个作用域里创建箭头函数,箭头函数的this就指向其上下文的this)。
*/
var name = "jake";
function fn() {
  this.name = "bar";
  let func=() => {
    console.log(this.name);
  }
  func();
}
let en=new fn();//bar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值