!
也想出现在这里? 联系我们
广告位
当前位置:首页>开发>其他开发实例>JavaScript普通函数与箭头函数有怎样的区别?

JavaScript普通函数与箭头函数有怎样的区别?

比较点

普通函数

箭头函数

具体案例

简写

/

箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略。

1、函数简写

this指向

this总是指向调用它的对象,如果作为构造函数,它指向创建的对象实例

箭头函数的this指向的是父级作用域的this,是通过查找作用域链来确定 this 的值,也就是说看的是上下文的this,指向的是定义它的对象,而不是使用时所在的对象。

2、this指向

this改变

call()、apply()、bind()等方法能改函数中this的指向

call()、apply()、bind()等方法不能改变箭头函数中this的指向

3、改变this指向

构造函数

可以作为构造函数,用来创建对象实例

箭头函数不能作为构造函数使用

4、构造函数

arguments对象

每一个普通函数调用后都具有一个arguments对象,用来存储实际传递的参数。

箭头函数没有自己的arguments,取而代之用rest(剩余)参数…arg来解决

5、arguments与…args

prototype原型

具有prototype

没有prototype原型

6、prototype原型

JavaScript普通函数与箭头函数有怎样的区别?

1、箭头函数简写:

  • 箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略

2、this指向:

  • 普通函数中this指向的是调用它的对象,如果作为构造函数,它指向创建的对象实例
  • 箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。

普通函数中this指向的9大场景:

函数的调用方式

this指向

对象.函数( )

对象

函数( )

window

IIFE 立即执行函数

window

定时器

window

DOM事件处理函数

添加事件监听的元素

数组[下标 ]( )

数组

call(对象,arg1,arg2)

对象

apply(对象,arry)

对象

new 函数()

对象的实例

9大场景对应的案例代码,太多放不下,需要粉丝群获取。

箭头函数中this指向

箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。

如果fn是普通函数,则this指向的是#box,如果是箭头函数,则this指向的是window

3、改变this指向

  • 普通函数通过调用call()、apply()、bind()可以改变this指向。
  • 箭头函数无法通过调用call()、apply()、bind()改变this指向。

普通函数

箭头函数

4、构造函数

  • 普通函数可以作为构造函数来创建对象实例
  • 箭头函数不能作为构造函数来使用,因为箭头函数没有自己的this

普通函数-用作构造函数

箭头函数-用作构造函数会报错

5、arguments与…args

  • 每一个普通函数调用后都具有一个arguments对象,用来存储实际传递的参数。
  • 箭头函数中访问arguments如果存在,则是来自于他的外层普通函数的arguments
  • 箭头函数没有自己的arguments对象,取而代之用rest(剩余)参数…args解决

普通函数中arguments

箭头函数没有arguments对象

  • 箭头函数中访问arguments如果存在,则是来自于他的外层普通函数的arguments

箭头函数中 …args剩余参数

arguments包含实际传递的所有参数,…args是剩余参数,只能放在所有参数后,并且不包含剩余参数前的参数。以下是错误写法

const sum = (a, args,b) => console.log(args);

6、prototype原型

  • 普通函数具有prototype原型属性
  • 箭头函数没有prototype原型属性

学习更多的JavaScript

如果你正在学习JS或者已经在我们的三十天计划中完成了4个综合项目实战,那不妨可以听下这个课程体系,三十天计划群里还提供了算法、数组等知识体系!

JavaScript普通函数与箭头函数有怎样的区别?

JavaScript普通函数与箭头函数有怎样的区别?

JavaScript普通函数与箭头函数有怎样的区别?

前端工程师成长方法

更多完整JavaScript课程体系在我们的系统班你有完整的呈现,包含了JavaScript基础篇、重点、算法、原理、面试题、实战案例讲解!同时也为你提供了前端高级工程师成长体系!(详细看下图内容)

JavaScript普通函数与箭头函数有怎样的区别?

如果需要深度学习的同学可以练习助理老师了解详细的课程以及课程的报名方式!(不定期会推出活动,有大额优惠券推出,活动详情联系助理老师了解即可!)如果你才开始学习前端,那么可以先学习我们的三十天计划(零基础的同学报名系统班同学可以和老师沟通制定学习计划,可以得到更快的成长!)

JavaScript普通函数与箭头函数有怎样的区别?

为帮助到一部分同学不走弯路,真正达到一线互联网大厂前端项目研发要求,首次实力宠粉,打造了《30天挑战学习计划》,内容如下:

HTML/HTML5,CSS/CSS3,JavaScript,真实企业项目开发,云服务器部署上线,从入门到精通

  • PC端项目开发(1个)
  • 移动WebApp开发(2个)
  • 多端响应式开发(1个)

共4大完整的项目开发 !一行一行代码带领实践开发,实际企业开发怎么做我们就是怎么做。从学习一开始就进入工作状态,省得浪费时间。

从学习一开始就同步使用 Git 进行项目代码的版本的管理,Markdown 记录学习笔记,包括真实大厂项目的开发标准和设计规范,命名规范,项目代码规范,SEO优化规范

从蓝湖UI设计稿 到 PC端,移动端,多端响应式开发项目开发

  • 真机调试,云服务部署上线;
  • Linux环境下 的 Nginx 部署,Nginx 性能优化;
  • Gzip 压缩,HTTPS 加密协议,域名服务器备案,解析;
  • 企业项目域名跳转的终极解决方案,多网站、多系统部署;
  • 使用 使用 Git 在线项目部署;

这些内容在《30天挑战学习计划》中每一个细节都有讲到,包含视频+图文教程+项目资料素材等。只为实力宠粉,真正一次掌握企业项目开发必备技能,不走弯路 !

过程中【不涉及】任何费用和利益,非诚勿扰 。

如果你没有添加助理老师微信,可以添加下方微信,说明要参加30天挑战学习计划,来自公众号!老师会邀请你进入学习,并给你发放相关资料。

30 天挑战学习计划 Web 前端从入门到实战 | arry老师的博客-艾编程

给TA打赏
共{{data.count}}人
人已打赏
其他开发实例

S9社区专题之wordpress主题完整开发系列

2022-12-23 21:10:45

其他开发实例

分享20个Javascript中的数组方法,收藏

2022-12-29 11:29:50

声明 本站上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。无意侵害您的权益,请发送邮件至 [email protected] 或点击右侧 私信:林沐阳 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索