JS循环语句

170 阅读2分钟

练习

1. var a = 3; var b = a++; a + b + a++`该代码输出的值为
​
        var a = 3;  // a == 3
        var b = a++;    // b == 3   a 再下一次的时候 == 4
        console.log(a + b + a++)    // a + b + a++ ===> 4 + 3 + 4
2.console.log(parseInt(1 * 100 / 3 + ""))`该代码输出的值为
​
  var a = parseInt(1 * 100 / 3 + "")
        
          parseInt(1 * 100 / 3 + "")
          parseInt(100 / 3 + "")
          parseInt(33.33333333... + "")
          parseInt('33.33333333')
          *33
        
         console.log(a)
​
 3. var a = 3; a++; a++; var b = a+2; ++a; console.log(a)` 该代码输出的值为
​
        var a = 3;      // a == 3
        a++;            // a 在此处先参与周围表达式运算, 所以应该这行为3, 但是参与完成后就自增, 也就是下次一调用, 就是4
        a++;            // a 下一次调用 为 5
        var b = a+2;  // b == 7       a == 5
        ++a;            // a 加加在前, 先自增  a == 6
        console.log(a)  // 6
 4. `3 - "36" % 5 + "2" - 2`该代码输出的值为
 
 // var a = 3 - "36" % 5 + "2" - 2
        /**
         *  3 - "36" % 5 + "2" - 2
         *  3 - 1 + "2" - 2
         *  2 + "2" - 2
         *  "22" - 2
         *  20
        */
        // console.log(a)
 5. `var a = 4; var num = 1 * (2 + 3) && a++ || 5 > 6 && 7 < 8 || !9;` num的值是
 
  // var a = 4;
        // var num = 1 * (2 + 3) && a++ || 5 > 6 && 7 < 8 || !9
        /**
         *  1 * (2 + 3) && a++ || 5 > 6 && 7 < 8 || !9
         *  1 * (2 + 3) && 4 || 5 > 6 && 7 < 8 || !9
         *  5 && 4 || 5 > 6 && 7 < 8 || !9
         *  4 || 5 > 6 && 7 < 8 || !9
         *  4 || false && true || !9
         *  4 || false || !9
         *  4 || false || false
         *  4 || false
         *  4
        */
        // console.log(num)
        // console.log(a)  // ?

while循环

初始值;

while(表达式 ){

循环体;

步长;

}

 var num = 1 // 1. 初始化
        while (num < 5) {  // num < 5     2. 循环结束条件
            console.log(1)  // 3. 循环体
            num++   // 4. 改变自身, 不写还能执行, 但是是死循环, 电脑死机速度, 取决电脑质量
        }

练习:

//  1 + 2 + 3 + 4 + 5 +.... + 99 + 100  ==> 5050
        var num = 1 
        var sum = 0
        while (num < 101) {
            sum = num
            // console.log(num)
            num++
        }
        /**
         *  第一次循环      将 num 的值赋值给 sum   ===> sum == 1
         *  第二次循环      将 num 的值赋值给 sum   ===> sum == 2
         *  第100次循环     将 num 的值赋值给 sum   ===> sum == 100
        */
// 求 1~100 之间所有 3 的倍数的和
        // 扩展: 1 求1~100偶数的和; 2 求1~100奇数的和
        var num = 1
        var sum = 0
        while (num < 101) {
            if (num % 3 == 0) {
                sum += num
            }
            num++
        }
        console.log(sum)

do....while

初始值

do{

循环体

步长

}while(表达式)

 var num = 1
        do {
            console.log(1)
            num++
        } while (num < 5)
  • do...while和while的差异:
  • do...while 在首次执行的时候,会先执行循环体,然后判断
  • while在首次执行的时候,会先判断,然后符号条件了在执行

for循环

  • 语法:for(初始值;结束条件;步长)
  •  for (var i = 0; i < 3; i++) {
                console.log(1)
            }
    
  • 练习
  • // 需求: 1 + 2 + 3 + 4 + 5 +.... + 99 + 100  ==> 5050
            var sum = 0
            for (var i = 1; i < 101; i++) {
                sum += i
                // console.log(i)
            }
            console.log(sum)
    

for循环嵌套

 for (var i = 0; i < 3; i++) {   // 外层 for 循环
            for (var k = 0; k < 3; k++) {   // 内层 for 循环
                console.log('1111')
            }
        }
  • for循环---99乘法表
  • for (var k = 1; k <= 9; k++) {   // 外层循环, 控制有多少行
                for (var i = 1; i <=k; i++) {   // 内层循环, 控制一行有多少个(控制有多少列)
                    document.write(` ${i}*${k}=${k*i}`)
                }
                document.write('<br>')
            }
    

流程控制语句

break 只终止函数中的程序

  for (var i = 1; i <= 5; i++) {
            console.log('我吃了', i, '个包子')
            if (i == 3) {
                console.log('我吃了 3 个包子了, 我吃饱了, 我不吃了')
                break
            }
        }

return 可以终止整个函数中的所有程序

continue 只终止那一次程序 接下来的还会继续执行

 for (var i = 1; i <= 5; i++) {
            if (i == 3) {
                console.log('完犊子~~这是第三个包子, 它掉地上了')
                continue
            }
            console.log('我吃了第', i, '个包子')
        }