【JavaScript】分支结构和循环结构
创始人
2024-03-18 20:28:42
0

目录

一、流程控制

二、分支结构

1. if语句

2. if…else语句

3. if…else if语句

4. switch语句

5. 条件表达式构成的选择结构

三、循环结构

1.while循环

2. do-while循环

3. for循环

3.1 for循环转换为while循环

3.2 断点调试

4. 循环嵌套


一、流程控制

流程控制是指通过控制代码的执行顺序来完成要实现的功能,流程控制的3种结构如下:

  • 顺序结构是程序中最基本的结构,程序会按照代码的先后顺序依次执行。
  • 分支结构用于根据条件来决定是否执行某个分支代码。
  • 循环结构用于根据条件来决定是否重复执行某一段代码。

二、分支结构

1. if语句

if语句也称为条件语句、单分支语句,当满足某种条件时,就进行某种处理。

if ( 条件表达式 ) {  

        // 代码段

}

当条件表达式为真时,执行下面的代码。

        var t = true;var a=10,b=20;console.log("交换前:a="+a+",b="+b);if(t){var t = a;a=b;b=t;}console.log("交换后:a="+a+",b="+b);

在没有'{}'的时,if控制范围是到其后的第一条语句

        // 在没有'{}'的时,if控制范围是到其后的第一条语句var t = false;var a=10,b=20;console.log("交换前:a="+a+",b="+b);if(t)var t = a;  // 因为t为false,所以if语句不成立,这句话没有执行a=b;    // 输出:20,因为没有{},不再if循环中,所以执行了b=t;    // 输出:false,因为没有{},不再if循环中,所以执行了console.log("交换后:a="+a+",b="+b);

2. if…else语句

if…else语句也称为双分支语句,当满足某种条件时,就进行某种处理,否则进行另一种处理。

if ( 条件表达式 ) {  

        // 代码段1

} else {

          // 代码段2

}

        var k = 21;if(k%2===0){console.log(k+"是偶数");}else{console.log(k+"是奇数")}

注意:else是关键字,但是不能单独使用,必须和if结合使用。 

3. if…else if语句

if…else if语句也称为多分支语句,可针对不同情况进行不同的处理。

if ( 条件表达式1 ) {  

        // 代码段1

} else if ( 条件表达式2 ) {  

        // 代码段2

}

...

else if ( 条件表达式n ) {  

        // 代码段n

} else {

        // 代码段n+1  

}

        /* 输入一个学生的成绩,输出成绩的等级>=90分 --- A>=80分 --- B>=70分 --- C>=60分 --- D<60分 --- E*/var s = prompt('请输入成绩')var k = null;if (s >= 90) {k = 'A';} else if (s >= 80 && s < 90) {k = 'B';} else if (s >= 70 && s < 80) {k = 'C';} else if (s >= 60 && s < 70) {k = 'D';} else {k = 'E';}console.log("等级为  ", k);

4. switch语句

switch语句也是多分支语句,功能与if…else if语句类似,不同的是它只能针对某个表达式的值作出判断,从而决定执行哪一段代码。

switch ( 表达式 ) {    

        case 值1        代码段1;        break;    

        case 值2        代码段2;        break;        

        ...    

        default:        代码段n;

}

        var k = 40;switch (k % 2) { // k%2有0、1两种情况case 0: console.log(k + "是偶数!"); break; // 如果k%2=0,执行此语句case 1: console.log(k + "是奇数!"); break; // 如果k%2=1,执行此语句}
  •  '表达式'的运算结果的类型:不能是浮点型
  •  '常量':类型必须和'表达式'的运算结果的类型一致
  • break:跳出switch结构
  • default:是关键字,表示所有case情况之外的,可以有也可以没有;位置是任意的,通常放在所有case之后

举例:查询水果的价格

使用多分支语句实现用户在弹出框中输入一个水果,如果有就弹出该水果的价格,如果该水果不存在就弹出“没有此水果”的效果。

var fruit = prompt('请您输入查询的水果:');
switch(fruit){case '苹果':alert('苹果的价格是 3.5/斤');break;case '榴莲':alert('榴莲的价格是 35/斤');break;case '香梨':alert('香梨的价格是 3/斤');break;default:alert('没有此水果')
}

举例:查询成绩等级

        var s = prompt("请输入成绩");var k = nullswitch (parseInt(s / 10)) {case 10:case 9: k = 'A'; break;case 8: k = 'B'; break;case 7: k = 'C'; break;case 6: k = 'D'; break;default:k = 'E';}console.log("等级是: ", k);

5. 条件表达式构成的选择结构

5.1 条件运算符:?:   是一个三目运算符

5.2 条件表达式:表达式1?表达式2:表达式3

5.3 运算过程:先运算"表达式1",若结果为true,选择"表达式2"进行运算,并把"表达式2"的运算结果作为整个条件表达式的值;若"表达式1"的运算结果为false,选择"表达式3"进行运算,并把"表达式3"的运算结果作为整个条件表达式的值。

var t = prompt("请输入一个整数");t%2===0?console.log(t+'是偶数!'):console.log(t+'是奇数!')

三、循环结构

1.while循环

'当'型循环,'当'条件为true时,执行循环;'当'条件为false时,结束循环。

它适合循环次数未知,但知道循环结束的条件的情况。

while(条件){
        循环体语句;
}

        //1+2+3+...+100var k = 1;var sum = 0;while (k <= 100) {sum += k;k++;}console.log("1+2+3+...+100=", sum);
        //100内奇数和、偶数和——方法一var k = 1;var i = 2;var odd = 0;var even = 0;while (k <= 100) {if (k % 2 === 0) {odd += k;} else {even += k;}k++;}console.log("100内的偶数和:", odd);console.log("100内的奇数和:", even);
        //100内奇数和、偶数和——方法二var k = 1;var i = 2;var odd = 0;var even = 0; while (k <= 100) {even += k;k = k + 2;}while (i <= 100) {odd += i;i = i + 2;}console.log("100内的偶数和:", odd);console.log("100内的奇数和:", even);
  • break语句:终止循环
        var i = 1;while (i <= 10) {if (i % 2 === 0) {break;}console.log(i);i++;}
  • continue语句:结束本次(满足条件的)循环,执行下一次循环
        var i = 1;while (i <= 10) {if (i % 2 === 0) {i++;continue;}console.log(i);i++;}

举例:判断素数

        //判断素数:只能被1和它本身整除的数——方法一var n = prompt("请输入一个整数");var i = 2;var flag = true;while (i < n) {if (n % i === 0) { //用n除以2~n-1之间的每个数,若能整除,则n不是素数flag = false;break;}i++;}if (flag) {console.log(n + "是素数!");} else {console.log(n + "不是素数!");}
        //判断素数:只能被1和它本身整除的数——方法二var n = prompt("请输入一个整数");var i = 2;//var flag = true;while (i < n) {if (n % i === 0) { //用n除以2~n-1之间的每个数,若能整除,则n不是素数//flag = false;break;}i++;}if (i >= n) {console.log(n + "是素数!");} else {console.log(n + "不是素数!");}

2. do-while循环

'直到'循环,直到条件为假时退出循环。

它适合循环次数未知,但知道循环结束的条件的情况。

do{
     循环体语句;
}while(条件);

  • 'do'是关键字:必须和while结合使用,不能单独使用
  • 与while循环的区别:无论条件是否为真,do-while的循环体语句至少执行一次
        // while语句// while (k > 0) {//     console.log('flag:', flag);//     k++;// }// console.log('k=', k); // 输出:k=0。不满足条件不进循环// do-while语句do {console.log('flag:', flag);// k++;} while (k !== 0)console.log('k=', k); // 输出:flag:true k= 0。不满足条件也会进一次循环

3. for循环

for语句是最常用的循环语句,它适合循环次数已知的情况。

for (初始化变量; 条件表达式; 操作表达式) {

        // 循环体

};

  • 三个表达式都可以省略,但是表达式之间的分号不能省略
  • 初始化变量:给循环变量、其他变量进行初始化
  • 条件表达式:控制循环体语句是否执行
  • 操作表达式:使循环趋向结束的语句
        // 1+2+...+100var i,sum=0;for(i=1;i<=100;i++){sum = sum+i;}console.log("sum=", sum);

 案例:输出1000所有'水仙花'数

 '水仙花'数 是一个三位数,每位数字的立方和等于这个数

即1的立方+5的立方+3的立方=153

        for (var n = 100; n < 1000; n++) {var g = n % 10; //个位数var s = parseInt(n / 10) % 10;  //十位数var b = parseInt(n / 100);  //百位数if ((g * g * g + s * s * s + b * b * b) === n) {console.log(n);}}

3.1 for循环转换为while循环

初始化变量;
while(条件表达式){
        循环体语句;
        操作表达式;
}

3.2 断点调试

断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后就可以控制代码一步一步的执行,在这个过程中可以看到每个变量当前的值。

查看方式:在Chrome浏览器中,按F12键启动开发者工具后,切换到“Sources”面板,界面效果如下图所示,其中右栏是JavaScript调试区。

在中栏显示的网页源代码中,单击某一行的行号,即可添加断点,再次单击,可以取消断点。例如,为for语句添加断点,如下图所示。 

刷新即可看执行结果——执行到断点位置停止,然后可以控制代码一步一步的执行。

4. 循环嵌套

在一个循环的内部再套一个或多个循环

var i,j,s=0;
for(i=1;i<=10;i++)                   //外循环
{
        for(j=1;j<=10;j++)           //内循环
        {
                s++;                        // 输出:100
        }             
};

外循环每循环一次,内循环必须全部做完。

案例:九九乘法表

        // console.log自带换行功能,而99乘法表需要在特定时换行,所以此时需要用到字符串的拼接var str = ''for (var i = 1; i < 10; i++) {for (var j = 1; j <= i; j++) {str += j + '*' + i + '=' + i * j + '\t';}str += "\n";}console.log(str);

案例:输出100内的所有素数

分析:100以内是循环(外循环);判断某个数是否是素数(内循环) 

        for (var n = 2; n <= 100; n++) { //外循环for (var j = 2; j < n; j++) { //内循环:判断当前的n是否是素数if (n % j === 0) {  //如果n能被2~n-1之间的数整除,则n不是素数break;  //终止内循环}}if (j >= n) { //n是素数console.log(n);}}

案例: 输出1000以内的所有'完数'

'完数'=它的所有因子之和

        // 完数=这个数的所有因子之和for (var n = 1; n <= 1000; n++) {var sum = 0;for (var k = 1; k < n; k++) {if (n % k === 0) {sum += k;}}if (sum === n) {console.log(n);}}

相关内容

热门资讯

寻觅靠谱离婚纠纷律师,循义律所... 在人生的旅途中,离婚纠纷无疑是一段充满挑战与痛苦的经历。面对复杂的法律程序、财产分割、子女抚养权争夺...
攀枝花警方通报:仁和区发生一起... 本文转自【攀枝花平安仁和】; 2025年12月27日,攀枝花市公安局仁和区分局发布一则警情通报:
社区开展《民法典》专题讲座,让... 为进一步提升居民法律意识,让《民法典》融入日常生活,保障群众合法权益,近日,苏州市姑苏区沧浪街道佳安...
吉利子公司起诉欣旺达,索赔23... 吉利控股集团的一家子公司已对电池制造商欣旺达提起诉讼,就其电池质量问题索赔23.14亿元。 根据欣...
演员保剑锋工作室发布律师声明,... 12月26日,保剑锋工作室发布律师声明,再否认“出轨”、“妈宝男”等传闻:“近期,部分网络用户在我方...
“松鼠AI”集体诉讼引关注:创... 近日,上海市徐汇区人民法院发布的一则开庭公告引发了教育行业高度关注。 该案件的被告是“松鼠AI”母...
云南能投招标结果:云南能源投资... 证券之星消息,根据天眼查APP-财产线索数据整理,云南能源投资股份有限公司12月25日发布《云南能源...
包钢股份招标结果:包钢股份《包... 证券之星消息,根据天眼查APP-财产线索数据整理,内蒙古包钢钢联股份有限公司12月24日发布《包钢股...
2025中国车市:一场政策、技... 2025年是中国汽车市场的深度变革与价值重构之年。 政策端以旧换新、购置税优惠激活消费,又以密集新规...