JavaScript循环语句
while
条件检测会在每次 statement
执行之前发生。条件检测为 true 才会执行 statement。
var n = 0; var x = 0; while (n < 3) { n++; x += n; }
do while
statement
在条件检测之前会执行一次。直到条件检测为false则结束循环。
do { i += 1; console.log(i); } while (i < 5);
for
for ([initialExpression]; [condition]; [incrementExpression]) { statement }
当一个for循环执行的时候,会发生以下事件:
- 如果有初始化表达式
initialExpression
,它将被执行。这个表达式通常会初始化一个或多个循环计数器,但语法上是允许一个任意复杂度的表达式的。这个表达式也可以声明变量。 - 计算
condition
表达式的值。如果condition的值是
true,循环中的statement会被执行。如果condition
的值是false,for循环终止。如果condition表达式整个都被省略掉了,
condition的值会被认为是true。 循环中的 statement被执行。如果需要执行多条语句,可以使用块
({ ... }
)来包裹这些语句。
- 如果有更新表达式
incrementExpression
,执行它. - 然后流程回到步骤2。
for in
循环一个对象所有可枚举的属性。i是对象的key值。
for of
在可迭代的对象上创建一个循环
(包括Array
, Map
, Set
, 参数对象 arguments 等等) 。i 是可迭代对象的value值。
for of 和 for in 的区别
for...in
遍历的结果是数组元素的下标, for...of 遍历的结果是数组元素的值:
let arr = [3, 5, 7]; arr.foo = "hello"; for (let i in arr) { console.log(i); // logs "0", "1", "2", "foo" } for (let i of arr) { console.log(i); // logs "3", "5", "7" // 注意这里没有 hello }
break
可用于:while
,do-while
,for
,switch
。
它会立即终止并退出整个循环,把控制权交回这些结构后面的语句。
for (i = 0; i < a.length; i++) { if (a[i] == theValue) { break; } }
continue
可用于:while,do-while,for。
跳过当前循环代码块的剩余部分并进入下一循环。