foreach、for in 和for of之间的区别

简介: foreach、for in 和for of之间的区别

在JavaScript中,forEachfor...infor...of都是用于遍历数组或对象的方法,但它们之间有一些重要的区别。

1、forEach

forEach是Array数组的一个方法,用于遍历数组中的每个元素。这个方法对数组的每个元素执行一次提供的函数。这个函数接受三个参数:元素值、元素索引和数组本身。

javascriptlet array = [1, 2, 3, 4, 5];
array.forEach(function(value, index, array) {
console.log(value); // 当前元素值
console.log(index); // 当前元素索引
console.log(array); // 数组本身
});

注意:forEach无法提前结束遍历,而且你不能使用breakcontinuereturn来控制forEach

2、for...in

for...in语句用于遍历对象的可枚举属性,包括从原型链上继承的属性。它遍历的是对象的属性名,而不是属性值。在遍历数组时,它遍历的是数组索引。

javascriptlet array = [1, 2, 3, 4, 5];
for (let index in array) {
console.log(index); // 当前元素索引
console.log(array[index]); // 当前元素值
}

注意:for...in不仅遍历数组自身的属性,还会遍历它从原型链上继承的属性。因此,如果数组原型链上有可枚举属性,for...in也会遍历到这些属性。

3、for...of

for...of语句在可迭代对象(包括数组、字符串、Set和Map等)上创建一个迭代循环,它遍历的是可迭代对象的值。

let array = [1, 2, 3, 4, 5];
for (let value of array) {
console.log(value); // 当前元素值
}

注意:for...of只遍历可迭代对象自身的值,不会遍历原型链上的值。

总结:

  • forEach主要用于遍历数组,且不能提前结束遍历。
  • for...in主要用于遍历对象的可枚举属性,包括从原型链上继承的属性。在遍历数组时,它遍历的是数组索引。
  • for...of主要用于遍历可迭代对象的值,它不会遍历原型链上的值。
相关文章
西门子S7-1200有什么功能特点?应用范围有哪些?CPU型号及模块类型有哪些?
S7-1200是西门子公司新推出的一款面向离散自动化系统和独立自动化系统的低端PLC。S7-1200采用了模块化设计,具备强大的工艺功能,适用于多种场合,可以满足不同的自动化需求。
西门子S7-1200有什么功能特点?应用范围有哪些?CPU型号及模块类型有哪些?
|
Web App开发 存储 缓存
RDMA优化整理(一)
简要的介绍了下RDMA的背景,并给出了一些RDMA编程优化技巧
4648 1
RDMA优化整理(一)
|
11月前
|
缓存 安全 网络安全
解锁网站速度与安全:CDN 使用指南及免费平台推荐
在互联网时代,网站的速度和安全性至关重要。CDN(内容分发网络)通过全球缓存节点提升访问速度、降低延迟,并提供安全防护。本文详解CDN的作用与适用场景,推荐几款免费CDN平台,如阿里云、鸟盾安全CDN等,助您选择合适的CDN服务,保障网站性能与安全。
1216 94
|
机器学习/深度学习 人工智能 自然语言处理
深度学习之分子生成
基于深度学习的分子生成是一项结合化学、计算科学与人工智能的新兴领域,旨在利用深度学习模型来生成具有特定性质的分子结构。
361 3
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
772 0
|
传感器 人机交互 vr&ar
VR技术的基本原理与发展历程:探索虚拟现实的无限可能
【8月更文挑战第24天】VR技术作为一项具有广阔前景和巨大潜力的技术,正在不断改变着我们的世界。让我们共同期待VR技术在未来的更多精彩表现吧!
4011 2
|
缓存
创建本地yum源并安装tree命令(openEuler-20.03-LTS-SP3)
创建本地yum源并安装tree命令(openEuler-20.03-LTS-SP3)
1386 1
|
XML Java Android开发
Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)
Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)
395 0
|
自然语言处理 Python
Python读取Word/PPT文件文本内容和图片内容
读取某个指定路径下的Word/PPT文件,并将其中所有的文本内容生成一个TXT文件,将所有的图片内容保存在一个文件夹里
960 0
|
存储 弹性计算 移动开发
阿里云无影云电脑具体价格及连接使用方法教程
阿里云无影云桌面4核8G配置1元首月,199元一年,8核16G配置年付899元。阿里云无影云电脑账号密码创建及连接教程如下
2982 0
阿里云无影云电脑具体价格及连接使用方法教程