Web开发技术梳理 0x4 JavaScript(0x1)循环和迭代

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/funkstill/article/details/88840276

    {}的作用相当于将一组语句变成语句块,让他看起来像一个语句。在循环迭代或者判断中,如果只有一条语句需要执行,完全可以不用{}进行包裹。

for

for ([initialExpression]; [condition]; [incrementExpression])
  statement

执行流程:

  1. 如果有初始化表达式,它将被执行。
  2. 计算condition表达式的值。如果true,循环中的statement会被执行。如果condition的值是false,for循环终止。如果condition表达式被省略,condition的值会被认为是true。
  3. 执行statement
  4. 如果有更新表达式incrementExpression则执行
  5. 回到2

do...while

do
  statement
while (condition);

     一直重复直到条件为假,注意,如果一开始条件为假它还是会执行一遍。

while

while (condition)
  statement

labeled

    一个 label 提供了一个可以让引用到程序别的位置的标识符。例如,可以用 label 标识一个循环, 然后使用 break 或者 continue 来指出程序是否该停止循环还是继续循环。

    label 的值可以是任何的非保留字的 JavaScript 标识符, statement 可以是任意想要标识的语句(块)。

label :
   statement

 实例,不使用label

var num = 0;
for (var i = 0 ; i < 10 ; i++){
     for (var j = 0 ; j < 10 ; j++){
          if( i == 5 && j == 5 ){
                break;
          }
     num++;
     }
}

alert(num); // 循环在 i 为5,j 为5的时候跳出 j循环,但会继续执行 i 循环,输出 95

    使用label

var num = 0;
outPoint:
for (var i = 0 ; i < 10 ; i++){
     for (var j = 0 ; j < 10 ; j++){
          if( i == 5 && j == 5 ){
                break outPoint;
          }
     num++;
     }
}

alert(num); // 循环在 i 为5,j 为5的时候跳出双循环,返回到outPoint层继续执行,输出 55

   和break和continue相比较,Label的优势就在他可以一次跳出多重循环。

break

    使用 break 语句来终止循环,switch, 或者是链接到 label 语句。

  • 使用不带 label 的 break 时, 它会立即终止当前所在的 while,do-while,for,或者 switch 并把控制权交回这些结构后面的语句。
  • 使用带 label 的 break 时,它会终止指定的标记(label)了的语句。

 continue

    用来继续执行(跳过代码块的剩余部分并进入下一循环)一个 while, do-while, for, 或者 label 语句。

  • 使用不带 label 的 continue 时, 它终止当前 while,do-while,或者 for 语句到结尾的这次的循环并且继续执行下一次循环。
  • 使用带 label 的 continue 时, 它会应用被 label 标识的循环语句。

 for...in

    循环一个指定的变量来循环一个对象所有可枚举的属性

for (variable in object) {
  statements
}

 for...of

    for...of语句在可迭代的对象上创建了一个循环(包括Array, Map, Set, 参数对象(arguments) 等等) ,对值的每一个独特的属性调用一个将被执行的自定义的和语句挂钩的迭代。

for (variable of object) {
  statement
}

    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
}

猜你喜欢

转载自blog.csdn.net/funkstill/article/details/88840276