zoukankan      html  css  js  c++  java
  • ECMAScript迭代语句

    迭代语句又叫循环语句,声明一组要反复执行的命令,直到满足某些条件为止。

    循环通常用于迭代数组的值(因此而得名),或者执行重复的算术任务。

    do-while, while, for, for-in

    ---------------------------------------------------------

    do-while 语句

    do-while 语句是后测试循环,即退出条件在执行循环内部的代码之后计算。这意味着在计算表达式之前,至少会执行循环主体一次。

    它的语法如下:

    do {statement} while (expression);

     例子:

            var i = 0;
            do {i += 2;} while (i < 10);
            console.log(i)    // 10

    ---------------------------------------------------------------------

    while 语句

    while 语句是前测试循环。这意味着退出条件是在执行循环内部的代码之前计算的。因此,循环主体可能根本不被执行。

    它的语法如下:

    while (expression) statement

    例子:

            var i = 0;
            while (i < 10) {
              i += 2;
              console.log(i)    // 2 4 6 8 10
            }

    --------------------------------------------------------------

    for 语句

    for 语句是前测试循环,而且在进入循环之前,能够初始化变量,并定义循环后要执行的代码。

    它的语法如下:

    for (initialization; expression; post-loop-expression) statement

    注意:post-loop-expression 之后不能写分号,否则无法运行。

    例子:

    iCount = 4;
    for (var i = 0; i < iCount; i++) {
      console.log(i);   // 0 1 2 3
    }

     这段代码定义了初始值为 0 的变量 i。只有当条件表达式(i < iCount)的值为 true 时,才进入 for 循环,这样循环主体可能不被执行。如果执行了循环主体,那么将执行循环后表达式,并迭代变量 i。

    ---------------------------------------------

    for-in 语句

    for 语句是严格的迭代语句,用于枚举对象的属性。

    它的语法如下:

    for (property in expression) statement

    例子:

    for (sProp in window) {
      alert(sProp);
    }

    这里,for-in 语句用于显示 window 对象的所有属性。

    输出数组:

    var arr = ['apple','pear','banana']  
    for ( i in arr) {        // 千万别这样做
      console.log(i);    //0 1  2
      console.log(arr[i]);   //apple pear banana
    }

    这绝对是一个糟糕的选择,为什么呢?

    • 在这段代码中,赋给index的值不是实际的数字,而是字符串“0”、“1”、“2”,此时很可能在无意之间进行字符串算数计算,例如:“2” + 1 == “21”,这给编码过程带来极大的不便。
    • 作用于数组的for-in循环体除了遍历数组元素外,还会遍历自定义属性。举个例子,如果你的数组中有一个可枚举属性myArray.name,循环将额外执行一次,遍历到名为“name”的索引。就连数组原型链上的属性都能被访问到。
    • 最让人震惊的是,在某些情况下,这段代码可能按照随机顺序遍历数组元素。
    • 简而言之,for-in是为普通对象设计的,你可以遍历得到字符串类型的键,因此不适用于数组遍历。

    --------------------------------------------------------

    强大的for-of循环

    ES6不会破坏你已经写好的JS代码。目前看来,成千上万的Web网站依赖for-in循环,其中一些网站甚至将其用于数组遍历。如果想通过修正for-in循环增加数组遍历支持会让这一切变得更加混乱,因此,标准委员会在ES6中增加了一种新的循环语法来解决目前的问题。

    就像这样:

            let arr = ['apple','pear','banana']  
            for (let aa of arr) {      
              console.log(aa);   //apple pear banana
            }

    是的,与之前的内建方法相比,这种循环方式看起来是否有些眼熟?那好,我们将要探究一下for-of循环的外表下隐藏着哪些强大的功能。现在,只需记住:

    • 这是最简洁、最直接的遍历数组元素的语法
    • 这个方法避开了for-in循环的所有缺陷
    • 与forEach()不同的是,它可以正确响应break、continue和return语句

    for-in循环用来遍历对象属性。

    for-of循环用来遍历数据—例如数组中的值。

    但是,不仅如此!

    for-of循环也可以遍历其它的集合

    for-of循环不仅支持数组,还支持大多数类数组对象,例如DOM NodeList对象。

    for-of循环也支持字符串遍历,它将字符串视为一系列的Unicode字符来进行遍历:

    for (var chr of "") {
      alert(chr);
    }

    它同样支持Map和Set对象遍历。

  • 相关阅读:
    9.堆排序
    8.全排列
    37.微信跳一跳辅助开发(C语言+EasyX)
    7.图形化实现快速排序法
    codeforces 632A A. Grandma Laura and Apples(暴力)
    codeforces 633D D. Fibonacci-ish(dfs+暴力+map)
    codeforces 633B B. A Trivial Problem(数论)
    codeforces 633A A. Ebony and Ivory(暴力)
    codeforces 622B B. The Time
    codeforces 622D D. Optimal Number Permutation(找规律)
  • 原文地址:https://www.cnblogs.com/miangao/p/6739072.html
Copyright © 2011-2022 走看看