首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么for-each有效,但是for...of..。不是吗?

for-each和for...of是两种不同的循环语法,它们在不同的场景下有不同的应用。

for-each是一种用于遍历数组或类数组对象的循环语法。它可以遍历数组中的每个元素,并对每个元素执行相同的操作。for-each循环的语法如下:

代码语言:txt
复制
array.forEach(function(element) {
  // 执行操作
});

for-each循环的优势在于它简洁明了,易于理解和使用。它适用于需要对数组中的每个元素执行相同操作的情况。例如,计算数组中所有元素的总和或平均值,或者对数组中的每个元素进行格式化等。

然而,for-each循环有一些限制。它无法中断或跳出循环,也无法直接访问数组的索引。此外,它也不能用于遍历普通对象的属性。

相比之下,for...of是一种用于遍历可迭代对象(如数组、字符串、Set、Map等)的循环语法。它可以遍历对象中的每个元素,并对每个元素执行相同的操作。for...of循环的语法如下:

代码语言:txt
复制
for (let element of iterable) {
  // 执行操作
}

for...of循环的优势在于它可以遍历各种类型的可迭代对象,包括数组、字符串、Set、Map等。它提供了更灵活的遍历方式,并且可以使用break和continue语句中断或跳出循环。此外,它还可以通过解构赋值的方式获取元素的值和索引。

然而,for...of循环也有一些限制。它无法直接遍历普通对象的属性,需要通过将对象转换为可迭代对象(如Object.keys(obj))来实现。此外,for...of循环在某些情况下可能会比for-each循环稍微慢一些,因为它需要进行迭代器的创建和管理。

综上所述,for-each和for...of是两种不同的循环语法,各自适用于不同的场景。for-each适用于遍历数组或类数组对象,并对每个元素执行相同操作;而for...of适用于遍历可迭代对象,并对每个元素执行相同操作。在选择使用哪种循环语法时,需要根据具体的需求和数据类型进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

对于Java循环中的For和For-each,哪个更快

Which is Faster For Loop or For-each in Java 对于Java循环中的For和For-each,哪个更快 通过本文,您可以了解一些集合遍历技巧。...但是你有没有想过这两种方法?哪一个遍历集合更有效for-each实现方法 For-each不是一种新语法,而是Java的语法糖(语法糖百度百科)。...基准测试 现在让我们使用for循环方法和for-each方法进行测试。...图片 原因分析 一些初学者可能想知道为什么ArrayList使用for循环方法遍历得更快,而LinkedList则更慢,速度也非常慢? 这由ArrayList和LinkedList数据结构决定。...使用迭代器模式,for-each不需要关心集合的具体实现。如果需要替换集合,无需修改代码即可轻松替换。

1.1K10
  • Java基础语法(六)——数组的定义与使用

    下标访问操作不能超出有效范围 [0, length) , 如果超出有效范围, 会出现下标越界异常 代码示例: public static void main(String[] args) {...比如说:我们要打印数组,我们本来是用for循环 或者 for-each 来写的,但是我们也可以用Arrays的工具类打印.   通过JDK的工具文档,我们查找到了相应的工具类. ? ?   ...那么真实的地址为什么要hash操作呢?   这就是Java的安全性了,不会轻易暴露自己数据的地址....我们用 内置类型作为参数,进行交换变量,但是最后编译的结果 两个变量却并未发生交换.   这是为什么呢? ?   交换形参 的值, 不影响实参的 值. (2)参数传数组类型 ?   ...那么为什么传引用类型可以 形参可对实参进行操作呢?   这里我们就要先从内存说起   在上面我们介绍了数组在内存中的储存, ?

    24.9K93

    CSS 预处理器中的循环

    每一种语言都有特殊的语法,但是最终的效果是相同的。...For-Each 循环遍历集合或者列表,每次循环一项。 上述循环的使用范围依次递减。for-each 循环是 for 循环的一种形式, 它们也是 while 循环的一种形式。...但是大多数的使用场景可能需要更具体的分类。我很难在实际工作中找到 while 循环——大多数例子使用 for 或者 for-each 处理的更好。所以 Stylus 只提供了后者的语法。...因为 for-each 循环本身就是处理项目集合,它是最可靠并最容易理解的循环。 我们通过循环一个简单的颜色列表来看看它是如何工作的。...$colors: ( 'pink': #E2127A, 'brand-primary': 'pink', 'site-background': 'brand-primary', ); 为什么要多此一举

    4.4K60

    for-each或迭代器中调用List的remove方法会抛出ConcurrentModificationException的原因

    for-each循环遍历的实质是迭代器,使用迭代器的remove方法前必须调用一下next()方法,并且调用一次next()方法后是不允许多次调用remove方法的,为什么呢?...list.remove(integer); } } } 比如这一段代码会抛出ConcurrentModificationException,为什么呢...这个迭代器修改的次数)和modCount(这个集合实际修改的次数)不相等,就会抛出ConcurrentModificationException 迭代器里面没有add方法,用迭代器时,可以删除原来集合的元素,但是...为什么要it.next()?难道next()方法又改了lastRet吗?它确确实实更改了。  ...综上 1.在for-each循环和迭代器中只可以做删除remove操作,不能做添加add操作。

    25820

    java基础(九):容器

    (HashSet LinkedHashSet TreeSet ) Map (HashMap LinkedHashMap TreeMap) Collections Iterator 使用泛型 1.为什么使用集合而不是数组...缺点:遍历和随机访问元素效率低下 优点:插入、删除元素效率比较高(但是前提也是必须先低效率查询才可。...Set常用方法   Set相对Collection没有增加任何方法 Set的遍历方法 for-each Iterator迭代器 无法使用for进行遍历(因为无序,所以没有get(i)) HashSet、...,无需循环条件 遍历集合时底层调用Iterator完成操作 For-each缺陷:   数组: 不能方便的访问下标值 不要在for-each中尝试对变量赋值,只是一个临时变量   集合:     与使用...缺点:遍历和随机访问元素效率低下 优点:插入、删除元素效率比较高(但是前提也是必须先低效率查询才可。

    83420

    超多绑定变量导致异常的一个案例

    此时问题有两个, (1) 执行一次SQL为什么带着这么多绑定变量? (2) 为什么执行这么多绑定变量的SQL会导致数据库出现问题?...官方给出的方案,是打个12578873的patch,但是他只会解决因为绑定变量超多导致的实例终止的问题,超过65535绑定变量的语句还是不能执行,因此无论是workaround,还是终极解决,都是建议不要使用绑定变量超过...其实针对这案例,60多万个绑定变量,不是应用“有意而为之”的,他想做的是一次性批量更新6万多记录,但是他在MyBatis的mapper中用的是for-each,这就会循环遍历list,"BEGIN"开头...关于MyBatis的for-each,可以参考官方文档的介绍, https://mybatis.org/mybatis-3/zh/dynamic-sql.html 如果要批量更新这些数据,该怎么做?...因此在设计开发过程中,有些环节,还是要知道原理,虽然说殊途同归,但是可能某些路径会消耗更高的成本,或者产生更多的问题,这就要持续积累,持续避坑了。

    74030

    一行 Python 代码实现并行

    传统的例子 简单搜索下"Python 多线程教程",不难发现几乎所有的教程都给出涉及类和队列的例子: 哈,看起来有些像 Java 不是吗?...只是,处理日常脚本任务时我们可以使用更有效率的模型。...为什么这很重要呢?这是因为借助正确的库,map 可以轻松实现并行化操作。...但是当处理网络密集型任务时,事情有有些难以预计了,通过实验来确定线程池的大小才是明智的。 线程数过多时,切换线程所消耗的时间甚至会超过实际工作时间。...结果: 很棒的结果不是吗?这一结果也说明了为什么要通过实验来确定线程池的大小。在我的机器上当线程池大小大于 9 带来的收益就十分有限了。

    1K90

    为何Google这类巨头会认为敏捷开发原则是废话?

    在过去8年里,我一直工作于“Agile”开发小组,所以让我用敏捷开发原则来告诉你事实,或许你会明白为什么那些在像Google这样巨头公司工作的开发者会认为敏捷开发是废话。...3.频繁交付软件,倾向于较短时间跨度 部分公司在这方面做的很好,但是大多数团队无法很好的掌控敏捷时间的尺度。交付时间表通常是基于大的更新,而大更新不属于敏捷。...或许不用多说什么了,不是吗? 6.不论团队内外,传递信息效果最好、效率也最高的方式是面对面交谈。 这句话的意思是告诉我不能用IM和邮件来交流吗?如果团队的成员分散于各地呢?...我改进现有软件的最有效方法是站在某人后面看他使用。然而在大多数公司中,你做不到这样,即便你知道客户是谁。他们也是忙的无暇顾你,也有可能是其他原因。现如今的人际交往不再像从前那样。不是吗?...敏捷方法存在很多废话,但是同样的废话也会存在于新的软件开发中,从面向对象到面向服务的体系结构等等。一个真正的敏捷方法不适用于紧急状况,更多的是为了产品创新。

    90830

    效率编程 之「通用程序设计」

    列表二中的元素:" + it.next()); } 如上述代码所示,第二个循环中包含了一个“剪切-粘贴”错误:它本来是要初始化一个新的循环变量it2,却使用了旧的的循环变量it,遗憾的是,这是it仍然还在有效范围之内...此外,高级的for-each循环优于传统的for循环。...如果真的那么不幸,并且外部集合的大小是内部集合大小的几倍,可能因为它们是相同的结合,循环就会正常终止,但是不会完成我们想要的工作。...如果使用的嵌套的for-each循环,则不会出现上面的Bug,例如: for (Face face1 : faces) { for (Face face2 : faces) {...自动装箱减少了使用装箱基本类型的繁琐性,但是并没有减少它的风险。

    71610

    Effective Java Second Edition中文版已出版 博客分类: Java 出版JavaHibernate金山编程

    他为我们带来了共78条程序员必备的经验法则:针对你每天都会遇到的编程问题提出了最有效、最实用的解决方案。   ...但是,各章节没有严格的前后顺序关系,你可以随意选择感兴趣的章节进行阅读。当然,如果你想马上知道第二版究竟有哪些变化,可以参阅附录中第二版与第一版详细的对照情况。   ...本书重点讲述了Java 5所引入的全新的泛型、枚举、注解、自动装箱、for-each循环、可变参数、并发机制,还包括对象、类、类库、方法和序列化这些经典主题的全新技术和最佳实践,如何避免Java编程语言中常被误解的细微之处...并提供了一些关于有效使用异常的指导原则。   第10章阐述如何帮助你编写出清晰、正确、文档组织良好的并发程序。   ...举个例子,就序列化技术来讲,HTTP会话状态为什么可以被缓存?RMI的异常为什么可以从服务器端传递到客户端呢?GUI组件为什么可以被发送、保存和恢复呢?是因为它们实现了Serializable接口吗?

    50740
    领券