美文网首页
JavaScript_循环

JavaScript_循环

作者: webGai | 来源:发表于2022-07-28 19:56 被阅读0次

    本章主要讲述循环相关语法和内容( while、do while、for )以及break和continue的使用……

    一、 while() 循环.

    while()循环很常用

    (一)基本语法

    while ( 条件表达式 ) {
        // 执行代码
    }
    
    eg:打印1~100的和
    var i = 0  // 初始值
    var sum = 0
    while ( i<100 ) { // 条件表达式 ---》 true就执行以下代码
        i ++    // 迭代
        sum += i
    }
    console.log( sum )  // 5050
    
    ps:
    1. 避免死循环!!!注意迭代值和表达式的设置!
    2. 注意考虑初始的值 和 迭代量的位置,如果进入循环就进行迭代( i++ ),就考虑第一个值是否有效

    二、 do while() 循环.

    和 while 循环区别不大,最大的区别在于,do while()是先执行一次代码,再判断

    (一)基本语法

    do {
        // 执行代码
    } while (条件表达式)
    
    eg:打印1~100的和
    var i = 1 // 初始值
    var sum = 0
    do {
        sum += i
        i++     // 迭代
    } while (i<=100)    //条件表达式 
    console.log(sum);   // 5050
    
    ps: while与do while 的区别
    1. do while () 最低执行一次;而 while ( ) 最低执行0 次
    2. do while () 是先执行代码,再判断;而while() 是先判断,再执行代码。

    三、 for() 循环.

    for 循环也是一种常见且实用的循环语句

    (一)基本语法

    for ( 初始值 ; 判断条件 ; 迭代量 ) {
        // 代码
    }
    
    eg:1~100的值
    var sum = 0
    for (var i = 0 ; i < 100 ; i++ ) {
        sum += i
    }
    console.log(sum)
    
    ps: for( ; ; )的写法有没有错?

    这样书写不会报错,但因为缺少迭代量和判断条件,导致其中代码将无限循环。( 通常可以省初始值而写在外面 )

    (二) for循环的嵌套

    eg: 打印九九乘法表

    for ( var i = 1 ; i <= 9 ; i++ ) {  // 第一层循环 i,确定行数
        for ( var j = 1 ; j <= i ; j++ ) {  // 第二层循环 j,确定每行打印个数
            document.write(`${j} * ${i} = ${i*j} `)
        }
        document.write(`<br/>`)
    }
    
    ps:

    考虑到时间复杂度( 下文提到 )以及运行速度,通常建议for()循环嵌套不超过两层。


    四、 break 与 continue.

    (一)区别与联系

    image.png

    a. break

    break 是跳出当前的一层循环,其后的代码不再执行

    eg: 吃4个包子,第3个有虫子,就扔掉第3个,继续吃第4个包子。
     for (var i = 1; i <= 4; i++) {
         if (i == 3) {
             console.log('这个包子有虫子,扔掉');
             continue; // 跳出本次循环,跳出的是第3次循环 
         }
         console.log('我正在吃第' + i + '个包子呢。');
     }
    

    b. continue

    continue 是跳出此次循环( 继续判断下一次循环的条件 ),continue后面的代码也不再执行

    eg: 吃5个包子, 吃到第3个发现里面有半个虫子, 其余的不吃了
    for (var i = 1; i <= 5; i++) {
        if ( i == 3 ) {
            break; // 直接退出整个for 循环,跳到整个for下面的语句
        }
        console.log('我正在吃第' + i + '个包子呢。');
    }
    

    五、时间复杂度

    o( 1 ) < o( logn ) < o( n ) < o( n^2 ) // 数值越大,速度越慢

    常数阶( o( 1 ) )

    // 常数阶 就是普通的一句代码
    console.log( 'hello world!' )
    

    对数阶( o( logn ) )

    // 对数阶通常两个参数 n与i 
    var sum = 0
    for (var i = 0 ; i < 10 ; i++ ) {
        sum *= 2    // 执行次数与 参数n(也就是2) 和 i 有关
    }
    

    线性阶( o( n ) )

    for ( var i = 0 ; i < 10 ; i++ ) {
        console.log( "执行了N次" )  // 执行n次
    }
    

    循环嵌套 平方阶( o( n^2 ) )

    for ( var i = 0 ; i < 10 ; i++ ) {
        for ( var j = 0 ; j < 10 ; j++ ) {
            console.log( "执行了10*10次" )  // 执行 10*10次
        }
    }
    

    相关文章

      网友评论

          本文标题:JavaScript_循环

          本文链接:https://www.haomeiwen.com/subject/qfaairtx.html