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

发布时间:2019-08-11 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了js中箭头函数和普通函数的区别脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、前言

首先看下直观的区别

    // 箭头函数 
    let fun = () => {
        console.log('lalalala');
    }
    
    // 普通函数 
    function fun() {
        console.log('lalla');
    }
    

二、定义

首先我认为箭头函数匿名函数,不能作为构造函数,不能使用new
然后借鉴阮一峰老师的es6教程里第七章(函数扩展)里面的第五小节箭头函数来看看他的定义

箭头函数有几个使用注意点。

  • 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
  • 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
  • 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
  • 不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。

把动态this转换为静态this

  • 长期以来,JavaScript 语言的this对象一直是一个令人头痛的问题,在对象方法中使用this,必须非常小心。箭头函数”绑定”this,很大程度上解决了这个困扰。
  • 箭头函数可以让this指向固定化,这种特性很有利于封装回调函数。
原理: this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数。

总结

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

脚本宝典总结

以上是脚本宝典为你收集整理的js中箭头函数和普通函数的区别全部内容,希望文章能够帮你解决js中箭头函数和普通函数的区别所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。