资讯专栏INFORMATION COLUMN

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

TerryCai / 538人阅读

摘要:不可以当作构造函数,也就是说,不可以使用命令,否则会抛出一个错误。正是因为它没有,所以也就不能用作构造函数。总结箭头函数的永远指向其上下文的,任何方法都改变不了其指向,如普通函数的指向调用它的那个对象

一、前言

首先看下直观的区别

    // 箭头函数 
    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指向调用它的那个对象

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103641.html

相关文章

  • ES6 - 箭头函数箭头函数普通函数区别总结

    摘要:但是因为箭头函数没有自己的,它的其实是继承了外层执行环境中的,且指向永远不会随在哪里调用被谁调用而改变,所以箭头函数不能作为构造函数使用,或者说构造函数不能定义成箭头函数,否则用调用时会报错报错箭头函数没有自己的箭头函数没有自己的对象。 这篇文章我们来了解一下ES6中的箭头函数。首先会介绍一下箭头函数的基本语法,因为基本语法比较好理解,我们用示例做简单介绍即可。之后,我们重点来讨论一下...

    scola666 评论0 收藏0
  • 普通函数箭头函数区别以及箭头函数注意事项、不适用场景

    摘要:第二种情况是箭头函数的如果指向普通函数它的继承于该普通函数。箭头函数的指向全局,使用会报未声明的错误。 showImg(https://segmentfault.com/img/remote/1460000018610072?w=600&h=400); 箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API...

    paulquei 评论0 收藏0
  • 如何秒懂 this

    日常开发中经常会遇到 this 指向的 bug,郁闷好久才猛然醒悟,痛定思痛,将 this 做个汇总,以便在日后的开发工作中少走弯路。注:本文讲述只针对浏览器环境。一、全局执行​​showImg(https://segmentfault.com/img/bVbq4NJ?w=277&h=109);可以看出在全局作用域中 this 指向当前的全局对象 Window。二、函数中执行 非严格模式中 ​​s...

    Lin_YT 评论0 收藏0
  • 面试官问:JSthis指向

    摘要:之前写过一篇文章面试官问能否模拟实现的和方法就是利用对象上的函数指向这个对象,来模拟实现和的。虽然实际使用时不会显示返回,但面试官会问到。非严格模式下,和,指向全局对象 前言 面试官出很多考题,基本都会变着方式来考察this指向,看候选人对JS基础知识是否扎实。读者可以先拉到底部看总结,再谷歌(或各技术平台)搜索几篇类似文章,看笔者写的文章和别人有什么不同(欢迎在评论区评论不同之处),...

    warnerwu 评论0 收藏0

发表评论

0条评论

TerryCai

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<