ES6中的箭头函数和普通函数有什么区别?

ES6中的箭头函数和普通函数有什么区别?

1、普通函数的 this 永远指向调用它的那个对象(谁调用,this 就指向谁)

箭头函数没自己的 this,它的 this 永远指向其定义环境,任何方法都不能改变其指向,如 call()、bind()、apply()等。(正因为它没有 this,所以也就不能用作构造函数,也没有原型对象)。

2、箭头函数不能当做构造函数,也就是说,不能使用 new 命令,否则会报错。

3、箭头函数没有原型属性。

4、箭头函数不能使用 arguments 对象,该对象在函数体内不存在,可以使用剩余运算符(rest)来替代。

function func(a,b,c){
  console.log(arguments[0],arguments[1],arguments[2]) 
}
func(1,2,3) //1,2,3
let func = (...rest) => {
  console.log(rest)
}
func(1,2,3)  //[1,2,3]

5、变量提升:由于 js 的内存机制,function 的级别最高,而用箭头函数定义函数的时候,需要var、let、const关键字,而 var 所定义的变量不能得到变量提升,所以箭头函数一定要定义在调用之前。

js 中 this 的指向问题:

1、普通函数中,this 指向其函数的直接调用者(谁调用,this 就指向谁)。

2、箭头函数中,this 指向其定义环境,任何方法都不能改变 this 的指向,如 call()、bind()、apply()等。

3、构造函数中,如果不使用 new ,则 this 指向window,如果使用 new 创建了一个实例,则 this 就指向该实例。

4、window 内置函数中,如 setInterval、setTimeout 等,其内部的 this 指向 window 。

5、匿名函数的 this 指向 window 。

6、apply()、call()、bind() 可以改变 this 的指向。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值