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原型
1、箭头函数简写:箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略 var fn = () => console.log("123");//去掉了{} 和 return fn(); //"123"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 function sum(a) { console.log(arguments); console.log(arguments[0]); } sum(1, 2, 3); //Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ] //1
箭头函数没有arguments对象 const sum = () => console.log(arguments);//arguments未定义 sum(); //Uncaught ReferenceError: arguments is not defined箭头函数中访问arguments如果存在,则是来自于他的外层普通函数的arguments function a() { var b = () => console.log(arguments);//arguments是a函数中的 b(); } a(1, 2, 3); //Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
箭头函数中 ...args剩余参数 const sum = (a, ...args) => console.log(args); sum(1, "a", "b", 3); // ["a", "b", 3]arguments包含实际传递的所有参数,...args是剩余参数,只能放在所有参数后,并且不包含剩余参数前的参数。以下是错误写法
const sum = (a , ... args ,b ) => console .log(args ); 6、prototype原型普通函数具有prototype原型属性 箭头函数没有prototype原型属性 学习更多的JavaScript
如果你正在学习JS或者已经在我们的三十天计划中完成了4个综合项目实战,那不妨可以听下这个课程体系,三十天计划群里还提供了算法、数组等知识体系!
前端工程师成长方法
更多完整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老师的博客-艾编程
听说搭载高能低耗CUBE引擎的红魔8Pro系列玩游戏局局稳赢?红魔手机自从2022年12月28日发布红魔8Pro系列开售以来,简直是忙的不亦乐乎,屡次开售,屡次秒售罄。不得不承认这次的红魔8Pro系列的确非常成功,不论是颜值俘获了人心,还是实
今日比特币价格BTC继续挣扎,下跌1。34,跌破22k,空头控制局面今日比特币价格这市场今天以红色交易的是比特币替代硬币包括以太坊看到下降。比特币价格在最近24小时内下跌了1。34。一些分析家认为,代币将回到20,000大关,然而,其他人仍然乐观的
经济日报解决三不心头事,让消费更快热起来中国经济网核心观点当前,我国扩大消费还存在一些制约因素,要下力气解决不便不愿不敢的难题。饭碗稳了,百姓才有钱花敢花钱,扩大消费才有基础有支撑。消费是畅通国内大循环的关键环节和重要引
春光无限好,一起来新密伏羲山赏花踏青河南日报客户端记者李林河南日报社全媒体记者陈浩伏羲山下,杏花丛中,一抹青绿舞姿,似春风剪刀,勾勒出杏花俏艳,映照着山河壮景,引得台下人群掌声雷动。3月9日,中国新密伏羲山第十七届杏
针对中国的四方芯片联盟,还未开始就已结束据韩国媒体报道,台湾和欧洲对美国芯片法表示真的太过分。早知现在,何必当初。笔者认为芯片联盟对华科技限制最后出现这个结果很正常。5日韩国媒体报道,1月芯片库存率近266,创26年来新
杭州亚运会倒计时200天,主题曲来了1杭州亚运会倒计时200天!主题推广曲从现在到未来正式上线。2国务院机构改革方案提请审议按5比例精减中央国家机关编制。3统筹推进中国人民银行分支机构改革,未来将不再保留中国人民银行
杭州最宜居的地方,老余杭!做杭漂的年数不短,租住过不少地方,也喜欢导出走走逛逛。虽然都在杭州,但不同的区域有不同的气场。有些区域日久也难以生情,仿佛隔着点什么,与自己总有那么点格格不入,也有些地方是一见倾心
(社会)北京山桃花盛开玉渊潭近期,随着气温升高,北京玉渊潭公园里的山桃花争相绽放,美不胜收。3月8日,游客在北京玉渊潭公园赏花。新华社记者罗晓光摄3月8日,游客在北京玉渊潭公园赏花留影。新华社记者罗晓光摄3月
国乒将迎来世乒赛前重点大满贯,主将全力出击为赢得一切2023年WTT新加坡大满贯是在世乒赛前最重点的赛事,根据WTT官方赛程显示,在这次新加坡大满贯赛后,还有三项赛事就轮到全球第二大赛德班单项世乒赛开赛,要是这四项比赛中国队全部参加
法拉第未来2022年净亏损5。52亿美元Tech星球3月9日消息,法拉第未来公布截至2022年12月31日的2022年第四季度和全年财务业绩。截至2022年12月31日止的财年,公司净亏损为5。521亿美元,而2021年
王兴入局了!投资王慧文光年之外A轮做中国OpenAIChatGPT来势汹汹,大佬们也坐不住了。在百度腾讯阿里京东等科技巨头纷纷加码ChatGPT后,3月8日下午,美团创始人王兴发布朋友圈,称将参与王慧文创业公司光年之外的A轮投资,并