zoukankan      html  css  js  c++  java
  • 【重温基础】3.循环和迭代

    本文是 重温基础 系列文章的第三篇,今天想起鬼脚七的一句话:人不一定自由,但思想一定是自由的。思想没有对和错,也没有高和低,只有不同。了解一个人可以去了解他的思想。

    系列目录:

    本章节复习的是JS中的循环语句,让我们能更快速且简单的完成一些需求。

    首先我们要知道:循环实际上就是把一个事情重复n次执行,也有可能是0次,JS中有以下几种循环语句类型:

    • for语句
    • do...while语句
    • while语句
    • labeled语句
    • break语句
    • continue语句
    • for...in语句
    • for...of语句

    1.for语句

    重复执行for的条件语句,直到循环条件为false退出循环:

    var a = 1;
    for ( a < 3){
        a ++;
    }
    

    这个语句大概执行了以下操作:

    • 1.定义并初始化一个变量a的值为1
    • 2.执行循环语句,条件为当a < 3的时候,a每次递增1
    • 3.返回第2步继续循环;
    • 4.当a在等于4的时候,不满足循环条件a < 3,然后退出循环;
      其他例子:
    // 求数组中所有值的和
    var a = [ 1, 3, 4, 6];
    var sum = 0;
    for (var i = 0; i < a.length; i++){
        sum += a[i];
    }
    sum; // 14
    

    2.do...while语句

    重复执行do的条件,直到不符合while的条件,退出循环:

    do {
      a += 1;
      console.log(a);
    } while (a < 5);
    

    3.while语句

    重复执行while的条件,直到while的条件为false,退出循环:

    var a = 0;
    var b = 0;
    while (a < 5){
        a ++;
        b += a;
    }
    // a => 5; b => 15
    

    4.labeled语句

    用来标识一个程序位置的标识符,如标识一个循环,并在breakcontinue中指出中国标识符,来停止这个循环。

    var a = [1, 2, 3, 4, 5];
    labelName:
    for(var i = 0 ;i< a.length; i++){
        console.log(i);
        if(i > 1){
            break labelName;
        }
    }
    // 0
    // 1
    // 2
    

    5.break语句

    用于终止一个循环,还可以在switch中终止,通常这么使用:

    • 终止一个循环:
    for(var i = 0 ;i< a.length; i++){
        if(a[i] == 1){
            break;
        }
    }
    
    • 终止一个label
    leo:
    for(var i = 0 ;i< a.length; i++){
        for(var j = 0 ;j< a.length; j++){
            if(a[i] == a[j]){
                break leo;
            }
        }
    }
    

    6.continue语句

    用来跳过当前循环,进入下个循环,可以使用在whiledo...whilefor或者label语句:

    • 有使用continue
    var a = 0;
    var b = 0;
    while (a < 5 ){
        a ++;
        if(a == 2){
            continue;
        }
        b += a;
        console.log(b);
    }
    // 1 4 8 13
    
    • 没有使用continue
    var a = 0;
    var b = 0;
    while (a < 5 ){
        a ++;
        if(a == 2){
            // continue;
        }
        b += a;
        console.log(b);
    }
    // 1,3,6,10,15
    

    7.for...in语句

    通常用于遍历一个对象的所有可枚举的属性,执行指定方法:

    var a = [
        {name : 'leo'},
        {name : 'pingan'},
        {name : '平安'},
    ]
    for(var k in a){
        // a为循环对象 k为当前指针位置
        console.log(a[k]);
    }
    

    8.for...of语句

    通常用于遍历一个可迭代对象(包括Array,Map,Set和参数对象arguments等),执行指定方法:

    var a = [1, 2, 5];
    for(var k in a){
        console.log(k);   // k 为当前元素的下标
    }
    for(var m of a){
        console.log(m);   // m 为当前元素的值
    }
    

    参考资料

    1.MDN 循环和迭代


    本部分内容到这结束

    Author 王平安
    E-mail pingan8787@qq.com
    博 客 www.pingan8787.com
    微 信 pingan8787
    每日文章推荐 https://github.com/pingan8787/Leo_Reading/issues
    JS小册 js.pingan8787.com

    bg

    个人博客:http://www.pingan8787.com 微信公众号【前端自习课】和千万网友一起,每日清晨,享受一篇前端优秀文章。 目前已连续推送文章 600+ 天,愿每个人的初心都能一直坚持下去!
  • 相关阅读:
    nyoj 95 众数问题(set)
    nyoj 93 汉诺塔(三)(stack)
    hdu 1010 Tempter of the Bone
    nyoj 55 懒省事的小明(priority_queue优先队列)
    nyoj 31 5个数求最值
    poj 1256 Anagram
    next_permutation函数
    nyoj 19 擅长排列的小明(深搜,next_permutation)
    nyoj 8 一种排序(用vector,sort,不用set)
    nyoj 5 Binary String Matching(string)
  • 原文地址:https://www.cnblogs.com/pingan8787/p/11838228.html
Copyright © 2011-2022 走看看