问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

刨析JS 中的forEach、for in、for of三类循环原理和性能

发布网友 发布时间:2024-10-07 05:20

我来回答

1个回答

热心网友 时间:2024-10-20 08:03

本文剖析 JS 中的三种循环:forEach、for in、for of 的原理与性能。首先,forEach 函数每次循环都会执行一次回调函数,接收三个参数,可选参数包括当前值、索引、数组自身,回调函数的 this 指向为可选参数。此循环主要用于遍历数组中的可枚举属性。

值得注意的是,使用 return 在 forEach 中并不能中断循环。若需中断循环,可利用 try-catch 结构,或采用替代循环,如使用 every 或 some 替换 forEach。每轮执行中,every 若内部返回 false 则跳出,而 some 内部为 true 时跳出。

为了实现类似于 forEach 的功能,可模拟其过程,重点关注 this 指向和 call、apply、bind 的使用,以便理解 JS 中 this 的指向。

for in 循环则迭代对象原型链上的可枚举属性,性能较差,因其会遍历对象原型链上的所有属性。

获取对象的 Symbol 属性可以通过 Object.getOwnPropertySymbols 方法实现,该方法返回对象的所有 Symbol 属性。

for of 循环依据迭代器规范执行,适用于数组、Set、Map 等实现了 Symbol.iterator 规范的对象。对象本身未实现该规范,因此不能使用 for of 循环。

为了让普通类数组支持 for of 循环,需要具备与数组类似的结果属性名从 0 开始,且拥有 length 属性。只需添加 Symbol.iterator 接口规范即可。

关于 arguments 对象为何不是数组,它实际上是类数组,具备从 0 开始的属性名和 length 属性,但其 __proto__ 直接指向 object 对象,不具备数组方法。有三种方法可将 arguments 转化为数组:使用 call 结合 Array.prototype.slice 方法,手写实现 slice 方法揭示原理,亦可利用扩展运算符或 Array.from 方法。

本文对 JS 中三种循环的原理与性能进行了深入分析,从 forEach 到 for in、for of,再到如何将类数组转化为数组,为开发者提供了一个全面的指南。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 空调室内铜管结霜怎么回事? 空调内管结霜是怎么回事? 我们为什么会发烧? 感冒为什么发烧 空调内堵 怎么解决办法 发热到体温恢复正常的过程中,人体的神经和免疫体统参与了调节,最终实 ... ...后变漂亮尾巴很长,深夜咕咕、咕咕的叫,这是什么鸟一一工长丨一1一/... 中国首个国际象棋冠军诸宸,当年不顾家人反对嫁到国外,现状如何?_百度知... 诸宸放弃中国国籍,不顾父母反对,嫁卡塔尔皇室的诸宸,如今过得怎么样... 大熊猫喝水时会是什么样子的啊? 目前最详细完整版的兔子童谣谋杀案 聊天方式与技巧有哪些 红枣糕怎么做营养丰富? 饥荒火鸡怎么打介绍_饥荒火鸡怎么打是什么 饥荒火鸡祭坛有什么用介绍_饥荒火鸡祭坛有什么用是什么 饥荒火鸡有什么用介绍_饥荒火鸡有什么用是什么 过客歌词? 大众车牌照灯故障灯怎么消除 情感搞笑连续剧 经典一幕 妈妈给开车的儿子打电话,问儿子如何把女朋友骗... 爱江山更爱美人火树游戏网页 澳大利亚景区有哪些 猴头蘑属于哪儿的特产 建设工程合同是指什么 建设工程合同的效力是怎样的?建设工程合作中必须要签订合同吗? 魔力宝贝手游黄螳螂(赤目螳螂)加点、技能推荐介绍_魔力宝贝手游黄螳螂... 魔力宝贝(魔力宝贝旅人职业推荐) 老车别克君越用什么机油对发动机最好? 06款别克君越2.4挂挡拉线哪里卖 老君越油门弹簧拆掉 苹果怎么用副卡打电话? 苹果如何用副卡打电话? 苹果怎样用副卡打电话?。 苹果手机怎么用副卡打电话? 苹果手机如何用副卡打电话? 急!!!仓鼠摔瘸了怎么办??? 仓鼠脚瘸了会死吗? 小仓鼠仓鼠左后腿断了,朝左侧不正常弯曲怎么办啊?在线等啊!_百度知 ... 黑电常识每日新知 投影机梯形校正 我家的仓鼠不小心从高出摔下来 后面的两条腿好像骨折了 我又不知道是... 工商银行的卡 电话挂失 又找到了 可以拿身份证复印件或者户口本解除挂失...