【JavaScript】分支结构和循环结构

news2024/12/28 18:37:22

目录

一、流程控制

二、分支结构

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 = null

        switch (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+...+100
        var 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+...+100
        var 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);
            }
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识点2--Docker的安装

上一节知识点说了&#xff0c;一般使用Docker都是在Linux上&#xff0c;Windows有VMware就够了&#xff0c;所以本篇知识点同理带大家在CentOS Linux上安装Docker&#xff0c;但是要知道一个事情&#xff0c;CentOS 6系列的系统由于官方yum的关闭而处于不推荐使用的系统&#x…

微服务框架 SpringCloud微服务架构 16 SpringAMQP 16.9 消息转换器

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构16 SpringAMQP16.9 消息转换器16.9.1 一个案例16.9.2 消息转换器16.9.3 总…

【笔记】JS的[Object file]类型转string

文件上传&#xff0c;用到若依不分离版&#xff0c;其中文件上传时需要控制文件类型&#xff0c;于是就有了这篇笔记。废话不多说&#xff0c;上代码&#xff1a; var formData new FormData();if ($(#filePath)[0].files[0] null) {$.modal.alertWarning("请先选择文件…

硬盘数据丢失怎么办?电脑硬盘恢复,3个步骤

硬盘是计算机中的一个重要组成部分&#xff0c;是存储数据、进行数据存取的部件。硬盘一旦出现故障&#xff0c;会对电脑系统安全造成威胁&#xff0c;从而导致电脑运行不稳定。硬盘数据丢失后恢复是个难题&#xff0c;电脑硬盘恢复该怎么操作&#xff1f;别急&#xff0c;先来…

欢快畅游的小鱼特效

Jquery 欢快畅游的小鱼特效 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" con…

年产2万吨山楂酒工厂的设计-包装工段及车间的设计(lunwen+任务书+cad图纸)

目录 1 前 言 1 2 工艺概述 2 2.1 工艺简述 2 2.2 山楂酒酿造工艺流程 2 2.2.1原料挑选 2 2.2.2清洗分选 2 2.2.3破碎去核 2 2.2.4成分调整 3 2.2.5活化酵母 3 2.2.6接种发酵&#xff08;前发酵&#xff09; 3 2.2.7发酵原酒&#xff08;后发酵&#xff09; 3 2.2.8陈酿 3 2.2.…

在vue项目中使用less全局变量

1、安装less和less-loader npm i less less-loader -D 2、此时全局变量并未生效&#xff0c;需要安装开发依赖&#xff1a; npm i style-resources-loader vue-cli-plugin-style-resources-loader -D并在vue.config.js文件中配置&#xff0c;指定全局变量文件&#xff1a; 3…

[附源码]计算机毕业设计万佳商城管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

自行车无级变速器设计

目录 1绪论 1 1.1 机械无级变速器的特征和应用 1 1.2 机械无级变速器的分类 1 1.3 机械无级变速器的发展概况 2 1.4 无级变速自行车研究现状 3 1.5 自行车无级变速器运用实例 5 1.6 研究的目的和意义 7 1.7 毕业论文设计内容和要求 8 2 自行车无级变速器总体方案的选择 8 2.1 钢…

多目标优化算法:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer,NSDBO)

蜣螂优化算法&#xff08;Dung beetle optimizer&#xff0c;DBO&#xff09;由Jiankai Xue和Bo Shen于2022年提出&#xff0c;该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发所得。 一、蜣螂优化算法 1.1蜣螂滚球 &#xff08;1&#xff09;当蜣螂前行无障碍时…

第7节:CSS概述,选择器,标签分类,CSS三大特性

1、什么是 CSS&#xff1f;CSS 全称为 Cascading Style Sheets&#xff0c;中文翻译为“层叠样式表”&#xff0c;简称 CSS。在网页制作时采用 CSS 技术&#xff0c;可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改&…

Word处理控件Aspose.Words功能演示:在 Python 中将 PDF 转换为 JPG

PDF文件以文档、发票、收据、文章等形式随处可见。它是打印和共享文档最方便的格式之一。在某些情况下&#xff0c;您必须将 PDF 文件转换为JPG图像以生成缩略图或嵌入到您的前端应用程序中。为此&#xff0c;本文介绍了如何在 Python 中以编程方式将 PDF 中的页面转换为 JPG 图…

有来实验室|第一篇:Seata1.5.2版本部署和开源全栈商城订单支付业务实战

在线体验&#xff1a;Seata实验室 一. 前言 相信 youlai-mall 的实验室大家有曾在项目中见到过&#xff0c;但应该都还处于陌生的阶段&#xff0c;毕竟在此之前实验室多是以概念般的形式存在&#xff0c;所以我想借着此次的机会&#xff0c;对其进行一个详细的说明。 实验室模…

[附源码]JAVA毕业设计课程在线反馈系统(系统+LW)

[附源码]JAVA毕业设计课程在线反馈系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

OPNET Modeler 软件的简单介绍与使用

文章目录前言一、OPNET 中的重要概念二、OPNET 编辑器简介三、用 OPNET 建立网络拓扑结构四、收集统计量五、仿真及结果1、运行仿真2、查看仿真结果①查看服务器 Ethernet load 结果②查看服务器 Ethernet Delay 结果六、复制场景并扩展网络1、复制场景2、运行仿真及结果总结前…

[附源码]计算机毕业设计基于SpringBoot的实验填报管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

宏鑫科技在创业板过会:前三季度收入约7亿元,王文志为实控人

近日&#xff0c;深圳证券交易所创业板披露的信息显示&#xff0c;浙江宏鑫科技股份有限公司&#xff08;下称“宏鑫科技”&#xff09;获得创业板上市委会议通过。本次冲刺上市&#xff0c;宏鑫科技计划募资7.48亿元&#xff0c;用于年产100万件高端锻造汽车铝合金车轮智造工厂…

Spring Boot 热部署与日志

Spring Boot 热部署与日志 1.springboot中devtools热部署 1.1 引言 为了进一步提高开发效率,springboot为我们提供了全局项目热部署,日后在开发过程中修改了部分代码以及相关配置文件后,不需要每次重启使修 改生效,在项目中开启了springboot全局热部署之后只需要在修改之后等待…

项目管理工具dhtmlxGantt入门教程(二):如何初始化dhtmlxGantt(上)

dhtmlxGantt 是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足项目管理控件应用程序的所有需求&#xff0c;有很完善的甘特图图表库。当您使用 dhtmlxGantt 开发应用程序时&#xff0c;您需要做的第一件事就是初始化&#xff0c;或者简单地说&#xff0…

浅谈 volatile

1.简介 volatile 在Java日常开发中,尤其是并发编程中,是一个高频使用的关键字,它提供了一种轻量级的同步机制(常用于和synchronized比较),用来修饰成员变量。volatile 具有如下两大特性: 1. 保证内存可见性2. 禁止指令重排序 volatile 无法保证原子性。 2.内存可见性 我们先…