ES6 循环2025年3月17日 | 阅读 10 分钟 编程语言中的循环语句有助于在条件评估为真时重复执行一组指令/函数。循环是重复执行某些条件的理想方式。在循环中,重复被称为**迭代**。 您可以在下图中看到循环的分类 ![]() 让我们试着理解上图中的循环。 确定循环确定循环具有确定/固定次数的迭代。在 ES6 中,有以下三种类型的确定循环
让我们试着详细阐述上面的循环。 for ( ; ; ) 循环**for ( ; ; ) 循环** 用于多次迭代程序的一部分。如果您有固定次数的迭代,则始终建议使用 'for' 循环。 语法 **'for' 循环** 包含以下一些部分
流程图 ![]() 示例 在下面,有三个 **'for' 循环** 的例子,我们展示了**简单的 'for' 循环**、具有**多个表达式的 'for' 循环**和**无限 'for' 循环**。
输出 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 2 x 10 = 20
输出 1 1 2 3 5 8 13 21 34
输出 infinite loop infinite loop infinite loop infinite loop infinite loop infinite loop infinite loop infinite loop infinite loop infinite loop infinite loop infinite loop . . . . infinite loop 要终止它,您可以使用 ctrl + c。 for…in 循环**for…in 循环** 类似于 **for 循环**,它迭代对象的属性,即当您需要访问对象的属性或键时,您可以使用 **for…in 循环**。当您处理对象或字典时,它是一个更好的选择,因为索引的顺序不重要。 语法 在每次迭代中,对象的一个属性被分配给变量名,这个循环会一直持续到所有对象属性都被覆盖。 示例 输出 Model : Galaxy Color : White RAM : 4GB 如果您在对象的属性中传递函数,那么此循环将为您提供完整的函数作为输出。您可以在以下代码中看到它的说明 输出 Model : Galaxy Color : White RAM : 4GB Price : function price() { console.log(this.model + "Price = Rs. 3300"); } 因此,您也可以使用 **for…in 循环** 访问方法。 for…of 循环与对象字面量不同,此循环用于迭代可迭代对象(数组、字符串等)。 语法 在每次迭代中,可迭代对象的一个属性被分配给 variable_name,循环会一直持续到迭代结束。 示例 输出 Apple Banana Mango Orange 不确定循环不确定循环具有无限迭代。它用于循环中的迭代次数是中间或未知的情况。 有以下两种类型的不确定循环
让我们试着详细阐述上面的循环。 while 循环while 循环是一个控制流语句,它允许根据给定的布尔条件重复执行代码。它由一个代码块和一个表达式/条件组成。 while 循环在执行代码块之前检查表达式/条件;这就是为什么这种控制结构通常被称为预测试循环。 语法 流程图 ![]() 示例 输出 0 1 2 3 注意事项
do…while 循环它是一个控制流语句,至少执行一次代码块,然后它将取决于条件循环是否重复执行该块。 do…while 循环在执行代码块后检查条件,这就是为什么这种控制结构也称为**后测试循环**。条件也可能始终评估为真,这将创建一个**无限循环**。 语法 流程图 ![]() 示例 输出 720 如果您使用 **while 循环** 执行此示例,那么它将写为 输出 720 上面两个示例之间的主要区别是,**while 循环** 只有在其传递的条件评估为真时才进入。但 **do…while 循环** 会执行一次语句,这是因为 **do…while 循环** 的起始迭代不被视为布尔表达式。然后对于后续迭代,while 将检查条件并将控制权从循环中取出。 循环控制语句循环控制语句用于中断或控制执行流。这些语句改变了其正常序列的执行。JavaScript 为您提供了完全控制来处理循环和 switch 语句。 在某些情况下,您可能需要退出循环而无需到达其底部。也可能存在您需要跳过部分代码并开始循环的进一步迭代的情况。因此,为了处理 JavaScript 中的这种情况,我们有 **break** 和 **continue** 语句。
让我们试着详细阐述上面的控制语句。 break 语句它用于将程序控制权从循环中取出。您可以在循环内或 switch 语句中使用 break 语句。在循环内使用 break 语句会导致程序退出循环。 语法 示例 上面的代码将打印 1 到 7 范围内四个 **n** 的值。 当 n 的值为 **4** 时,循环强制控制退出循环,因为有 **break 语句**。成功执行上述代码后,您将获得以下输出。 输出 n=1 n=2 n=3 n=4 continue 语句与 break 语句不同,continue 语句不会退出循环。它终止循环的当前迭代并开始下一次迭代。 语法 示例 上面的示例将显示 **n** 的值,但如果 **n** 的值为 **3**,它将跳过当前迭代。成功执行上述代码后,您将获得以下输出。 输出 n = 1 n = 2 n = 4 n = 5 n = 6 使用标签控制流程**标签** 不过是一个标识符后跟一个**冒号 (:)**,它应用于代码块或语句。您可以将标签与 **break** 和 **continue** 一起使用来控制流程。 您不能在 break 和 continue 语句及其标签名称之间使用换行符。此外,在标签名称和**关联循环**之间不应该有任何语句。 定义标签的语法 **labelname:** 任何 JavaScript 标识符,它不是保留字。 **Statement:** 这是一个 JavaScript 语句。 注意:在严格模式下,您不能使用 "let" 作为标签名称。这将导致语法错误,因为 let 是一个保留标识符。
带 break 语句的标签在不使用标签引用的情况下,您只能使用 break 来退出循环或 switch,但通过使用标签引用,您可以使用 break 来跳出任何代码块。 语法 示例 输出 x = 1, y = 1 x = 1, y = 2 x = 1, y = 3 x = 2, y = 1 带 continue 语句的标签continue 语句只能用于跳过一次循环迭代,无论是否使用标签引用。 语法 示例 您可以在上面代码的以下输出中注意到,它跳过了“x = 2, y = 2”和“x = 2, y = 3”两者。 输出 x = 1, y = 1 x = 1, y = 2 x = 1, y = 3 x = 2, y = 1 x = 3, y = 1 x = 3, y = 2 x = 3, y = 3 带标签的函数声明在 ECMAScript 6 之前,**LabeledStatement** 规范不允许将标签语句与 **FunctionDeclaration** 关联。但是,带标签的 **FunctionDeclaration** 是 **非严格代码** 中允许的扩展,并且大多数浏览器托管的 ECMAScript 实现都支持该扩展。 但在 ECMAScript 2015 (ES6) 中,**LabeledStatement** 的语法生成允许使用 **FunctionDeclaration** 作为 **LabeledItem**,但它包含一个错误规则,如果发生这种情况会导致语法错误。 为了网络浏览器兼容性,该规则通过添加带下划线的文本进行了修改 LabeledItem : FunctionDeclaration 如果严格模式的任何源代码匹配此规则,则将导致语法错误。 从 ECMAScript 2015 开始,带标签的函数声明在非严格代码中标准化 如果您在严格模式下编写上述代码,则会抛出语法错误 **生成器函数** 在**非严格模式**和**严格模式**下都不能带标签。 下一主题ES6 决策 |
我们请求您订阅我们的新闻通讯以获取最新更新。