JavaScript流程控制(分支)


Posted in Javascript onDecember 06, 2021

一、流程控制

流程控制主要有三种结构:

  • 分别是顺序结构
  • 分支结构
  • 循环结构

这三种结构代表三种代码执行的顺序。

JavaScript流程控制(分支)

二、顺序流程控制

顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

三、分支流程控制 if 语句

1、分支结构

由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果。

2、 if 语句

// 条件成立执行代码,否则什么也不做
if (条件表达式) {
    // 条件成立执行的代码语句
}

执行流程为:

JavaScript流程控制(分支)

例如:弹出一个输入框,要求用户输入年龄,如果年龄大于等于 18 岁,允许进网吧。

var age = prompt('请输入您的年龄:');
        if(age > 18) {
            alert('您的年龄合法,请进入!');
        }

当输入的数值大于等于18时,弹出:

JavaScript流程控制(分支)

3、 if else语句(双分支语句)

语法结构:

// 条件成立  执行 if 里面代码,否则执行else 里面的代码
if (条件表达式) {
    // [如果] 条件成立执行的代码
} else {
    // [否则] 执行的代码
}

执行流程:

JavaScript流程控制(分支)

例如:写一个是否为闰年的案例,接收用户输入的年份,如果是闰年就弹出闰年,否则弹出是平年。
算法分析:
算法:能被4整除且不能整除100的为闰年(如2004年就是闰年,2005年不是闰年)或者能够被 400 整除的就是闰年
弹出prompt 输入框,让用户输入年份,把这个值取过来保存到变量中
使用 if 语句来判断是否是闰年,如果是闰年,就执行 if 大括号里面的输出语句,否则就执行 else里面的输出语句
一定要注意里面的且 && 还有或者 || 的写法,同时注意判断整除的方法是取余为 0

var year = prompt('请输入要判断的年份:');
        if(year%400 == 0 || year % 4 == 0 && year / 100 != 0) {
            alert('该年是闰年!');
        }else{
            alert('该年是平年!');
        }

当输入2004年的时候:

JavaScript流程控制(分支)

当输入2005年时,弹出:

JavaScript流程控制(分支)

4、if else if 语句(多分支语句)

语法结构:

// 适合于检查多重条件。
if (条件表达式1) {
    语句1;
} else if (条件表达式2)  {
    语句2;
} else if (条件表达式3)  {
   语句3;
 ....
} else {
    // 上述条件都不成立执行此处代码
}

执行流程:

例如:输出一个判断成绩的案例,接收用户输入的分数,根据分数输出对应的等级字母 A、B、C、D、E。其中:

  1. 90分(含)以上 ,输出:A
  2. 80分(含)~ 90 分(不含),输出:B
  3. 70分(含)~ 80 分(不含),输出:C
  4. 60分(含)~ 70 分(不含),输出:D
  5. 60分(不含) 以下,输出: E

案例分析:

按照从大到小判断的思路
弹出prompt输入框,让用户输入分数,把这个值取过来保存到变量中
使用多分支 if else if 语句来分别判断输出不同的值

var score = prompt('请您输入分数:');
        if (score >= 90) {
        alert('A');
        } else if (score >= 80) {
        alert('B');
        } else if (score >= 70) {
        alert('C');
        } else if (score >= 60) {
        alert('D');
        } else {
        alert('E');
        }

当输入对应的分数时,就会弹出对应的等级。

四、三元表达式

三元表达式也能做一些简单的条件选择。 有三元运算符组成的式子称为三元表达式。

表达式1 ? 表达式2 : 表达式3;

执行思路:

如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值
简单理解: 就类似于 if else (双分支) 的简写
例如:输入一个补0的案例,用户输入数字,如果数字小于10,则在前面补 0 ,比如01,09 ,如果数字大于10,则不需要补,比如 20。
案例分析:
用户输入0~59之间的一个数字,如果数字小于10,则在这个数字前面补0,(加0) 否则 不做操作,用一个变量接受这个返回值,输出

var num = prompt('请输入一个 0 ~ 59 之间的数');
        var result = num < 10 ? '0'+ num : num;
        alert(result);

当输入2时,进行补0操作:

JavaScript流程控制(分支)

当输入10时,直接打印结果:

JavaScript流程控制(分支)

五、分支流程控制 switch 语句

1、语法结构

switch 语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用 switch

语法结构:

switch( 表达式 ){ 
    case value1:
        // 表达式 等于 value1 时要执行的代码
        break;
    case value2:
        // 表达式 等于 value2 时要执行的代码
        break;
    default:
        // 表达式 不等于任何一个 value 时要执行的代码
}

switch :开关 转换 , case :小例子 选项

  • 关键字 switch 后面括号内可以是表达式或值, 通常是一个变量
  • 关键字 case , 后跟一个选项的表达式或值,后面跟一个冒号不能跟判断条件。
  • switch 表达式的值会与结构中的 case 的值做比较 ,如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
  • 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码

注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。

例如输入一个查询成绩的案例,要求同上面的if-else-if语句。

var s = prompt('请输入成绩:');
var n = parseInt(s/10);
var k = null;
switch(n){
    case 10: {
        k = 'A';
        break;
    }
    case 9:{
        k = 'B';
        break;
    }
    case 8:{
        k = 'C';
        break;
    }
    case 7:{
        k = 'D';
        break;
    }
    default: k = 'E';
}
console.log('您的成绩等级为:'+k);

当输入100分时,输出:

JavaScript流程控制(分支)

当输入73分时,输出:

JavaScript流程控制(分支)

2、switch 语句和 if else if 语句的区别

  • 一般情况下,它们两个语句可以相互替换switch…case 语句通常处理 case为比较确定值的情况, 而 if…else…语句更加灵活,常用于范围判断(大于、等于某个范围)
  • switch 语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else 语句有几种条件,就得判断多少次。
  • 当分支比较少时,if… else语句的执行效率比 switch语句高。
  • 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。

到此这篇关于JavaScript流程控制(分支)的文章就介绍到这了,更多相关JavaScript流程控制内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JQuery 初体验(建议学习jquery)
Apr 25 Javascript
javascript中setTimeout使用指南
Jul 26 Javascript
javascript设计模式之对象工厂函数与构造函数详解
Jul 30 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
Jun 12 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
Angularjs实现上传图片预览功能
Sep 01 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
layui实现给某一列加点击事件
Oct 26 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
Mar 14 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 Javascript
使用Cargo工具高效创建Rust项目
Aug 14 Javascript
JavaScript实现队列结构过程
Dec 06 #Javascript
JavaScript实现栈结构详细过程
Dec 06 #Javascript
JavaScript实现优先级队列
Dec 06 #Javascript
JavaScript阻止事件冒泡的方法
Dec 06 #Javascript
JavaScript执行机制详细介绍
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 #Vue.js
JavaScript 与 TypeScript之间的联系
You might like
模仿OSO的论坛(五)
2006/10/09 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php实现三级级联下拉框
2016/04/17 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
python正则表达式面试题解答
2020/04/28 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
python让列表倒序输出的实例
2018/06/25 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
Python集合操作方法详解
2020/02/09 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
高级运动鞋:GREATS
2019/07/19 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
我们的节日端午节活动方案
2014/03/02 职场文书
低碳环保口号
2014/06/12 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis