JS if else语句详解

news2025/8/9 9:08:27

在正常情况下,JavaScript 脚本是按顺序从上到下执行的,这种结构被称为顺序结构。如果使用 if、else/if 或 switch 语句,可以改变这种流程顺序,让代码根据条件选择执行的方向,这种结构被称为分支结构。

if语句

if 语句允许根据特定的条件执行特定的语句。语法格式如下:

  1. if(expr)
  2. statement

如果表达式 expr 的值为真,则执行语句 statement;否则,将忽略语句 statement。流程控制示意如图所示。

 

示例

下面示例使用内置函数 Math.random() 随机生成一个 0 到 100 之间的整数,然后判断该数能否被 2 整除,如果可以整除,则输出显示。

  1. var num = parseInt(Math.random() * 99 + 1); //使用random()函数生成一个随机数
  2. if (num % 2 == 0){ //判断变量num是否为偶数
  3. console.log(num + "是偶数。");
  4. }

如果 statement 为单句可以省略大括号,例如:

  1. if (num % 2 == 0)
  2. console.log(num + "是偶数。");

建议养成良好的编码习惯,不管是单句,还是复句,都应使用大括号,以避免疏忽大意引发的错误。例如,不小心在 if(num % 2 == 0) 加上分号,JavaScript 解释器就会把条件表达式之后的分号视为一个空语句,从而该变条件表达式影响的范围,导致后面的语句永远被执行。

  1. if(num % 2 == 0);
  2. console.log(num + "是偶数。");

这种错误不容易被发现,也不会引发异常。

else语句

else 语句仅在 if 或 else/if 语句的条件表达式为假的时候执行。语法格式如下:

  1. if(expr)
  2. statement1
  3. else
  4. statement2

如果表达式 expr 的值为真,则执行语句 statement1;否则,将执行语句 statement2。流程控制示意如图所示。

 

示例1

针对上面示例,可以设计二重分支,实现根据条件显示不同的提示信息。

  1. var num = parseInt(Math.random() * 99 + 1);
  2. if (num % 2 == 0){
  3. console.log(num + "是偶数。");
  4. }else{
  5. console.log(num + "是奇数。");
  6. }

示例2

if/else 结构可以嵌套,以便设计多重分支结构。

  1. var num = parseInt(Math.random() * 99 + 1);
  2. if (num < 60){
  3. console.log("不及格");
  4. }else{
  5. if (num < 70){
  6. console.log(""及格);
  7. }else{
  8. if (num < 85){
  9. console.log("良好");
  10. }else{
  11. console.log("优秀");
  12. }
  13. }

一般可以简化为如下语法格式,这样更方便编写和维护。

  1. var num = parseInt(Math.random() * 99 + 1);
  2. if (num < 60) {console.log("不及格"); }
  3. else if (num < 70) {console.log("及格"); }
  4. else if (num < 85) {console.log(""良好"); }
  5. else {console.log("优秀"); }

把 else 与 if 关键字组合在一行内显示,然后重新格式化每个句子,使整个嵌套结构的逻辑思路就变得清晰。其流程控制示意如图所示。

 

设计嵌套分支结构时,建议使用复句。如果是一行单句,也应该使用大括号包裹起来,避免条件歧义。例如,下面嵌套结构就容易引发误解。

  1. if(0)
  2. if(1)
  3. console.log(1);
  4. else
  5. console.log(0);

针对上面代码,JavaScript 解释器将根据就近原则,按如下逻辑层次进行解释。

  1. if(0)
  2. if(1)
  3. console.log(1);
  4. else
  5. console.log(0);

因此使用复句可以避免很多问题。

  1. if(0) {
  2. if(1) console.log(1);
  3. }else{
  4. console.log(0);
  5. }

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

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

相关文章

【微信小程序】实现页面跳转功能

&#x1f3c6;今日学习目标&#xff1a;第十三期——实现页面跳转功能 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰预计时间&#xff1a;20分钟 &#x1f389;专栏系列&#xff1a;我的第一个微信小程序 文章目录前言实现效果事件如…

Unity3D占用内存太大怎么解决呢? -下

什么时候才是UnusedAssets?看一个例子&#xff1a; Object obj Resources.Load("MyPrefab"); GameObject instance Instantiate(obj) as GameObject; ......... Destroy(instance); 创建随后销毁了一个Prefab实例&#xff0c;这时候 MyPrefab已经没有被实际的物体…

传奇列表获取失败与登录器太老怎么解决

一.登录器列表读取失败,无法获取登录器远程列表解决方案 1.查看登陆器列表地址是否能正常访问&#xff0c;登陆器读取的列表地址都是一个txt文本格式。如下图&#xff1a; 例如&#xff1a;我们的列表为: http://域名/123.txt&#xff0c;我们把列表复制到浏览器中查看是否能正…

锐捷MPLS跨域方案C1实验配置

目录 配置IPv4的BGP邻居 配置PE之间的Vpnv4邻居 此时配置PE与CE设备对接命令 手工配置为PE地址分配标签 MPLS隧道——跨域解决方案C1、C2讲解_静下心来敲木鱼的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/127634890?ops_request_misc%257B%2522requ…

使用backdrop-filter实现elementui官网的模糊滤镜效果的和毛玻璃效果

前置 element-ui官网有一个属性很好看,可以看到,当滚动的时候,文字会被显示白色带阴影背景 你可能有点印象,因为公交车的时候也是类似于这种效果 他们是怎么做的呢?我看到源码使用到了 backdrop-filterbackground-sizebackground-image就实现了,很少的属性,达到了不错的效果,…

鲲鹏devkit训练营——《锁长期等待》项目解析

《锁长期等待》项目解析 通过本次实验学习掌握性能分析工具&#xff0c;利用性能分析工具找出程序中加锁范围不合理的地方并解决 安装web端性能分析工具 获取性能分析工具软件包 1、登录远程服务器 获取鲲鹏性能分析工具软件包上传到远端服务器 2、安装性能分析工具 使用…

【Flink】基本转换算子使用之fliter、flatMap,键控流转换算子和分布式转换算子

文章目录一 Flink DataStream API1 基本转换算子的使用&#xff08;1&#xff09;flitera 使用匿名类实现b 使用外部类函数实现b 使用flatMap实现&#xff08;2&#xff09;flatMapa 使用匿名类实现b 使用匿名函数实现2 键控流转换算子&#xff08;1&#xff09; keyBy&#xf…

mysql InnoDB存储引擎的锁机制

目录 前言 1. 锁的分类 1.1 实现方式 1.2 锁的粒度 2. 查询操作加锁方式 2.1 一致性非锁定读 2.2 一致性锁定读 3. 锁的算法 4. 锁的升级 5. 死锁 6.总结 前言 锁机制的目的是最大程度提高数据库的并发访问&#xff0c;另一方面确保可以以一致的方式读取和修改数据。…

Camunda工作流引擎简记

本文转载自玩转Camunda之实战篇-赶紧收藏起来吧_哔哩哔哩_bilibili 其中部分内容&#xff0c;经过本人修改 一、工作流相关介绍 BPM(BusinessProcessManagement)&#xff0c;业务流程管理是一种管理原则&#xff0c;通常也可以代指BPMS(BusinessProcessManagementSuite)&#…

火山引擎 DataTester 应用故事:一个A/B测试,将产品DAU提升了数十万

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 疫情让线下的需求大量转移到线上&#xff0c;催生出了远程办公、网络授课、线上健身等新的生态现象。如何更好地为用户服务&#xff0c;提升用户体验&#xff0c;成…

计算机的组成

文章目录五大部件1) 输入设备2) 存储器3) CPU&#xff08;中央处理器&#xff09;4) 输出设备五大部件 所有类型的计算机&#xff0c;其本质都是接收用户输入的原始数据&#xff0c;并将其加工、处理成对用户有用的数据&#xff0c;它们都支持执行如表 1 所示的 5 项基本操作。…

SpringCloud Sentinel 使用

哈喽~大家好&#xff0c;SpringCloud Sentinel 使用。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【微服务】 &#x1f949;推荐专栏&#xff1a; JavaEE框架 目录 一、前言 1、什么是Sentinel&…

时间复杂度和空间复杂度【一学就会】

目录 &#x1f947;1.算法效率 &#x1f50e;2.时间复杂度 &#x1f4d7;2.1 大O渐进表示法 &#x1f4d8;2.2 时间复杂度的练习&#xff08;没有说明即最坏情况&#xff09; &#x1f511;3.空间复杂度 &#x1f308;如何评价一个代码呢&#xff1f;它的效率高不高&#…

美创科技发布数据安全综合评估系统|推进安全评估高效开展

数字化深入的今天&#xff0c;数据价值和风险相伴相生&#xff0c;让数据要素发挥更大价值&#xff0c;提高风险预见预判&#xff0c;数据安全评估日益紧迫和必要。《数据安全法》提出&#xff1a;“重要数据处理者应对其数据处理活动定期开展风险评估&#xff0c;并向有关主管…

精彩回顾|关系网络赋能银行数字化转型的应用与实践

本文是根据11月10日Galaxybase图创课堂&#xff1a;乘金融科技之风&#xff1a;关系网络赋能银行数字化转型的应用与实践整理&#xff0c;错过的小伙伴们可以观看回放&#xff1a;https://uao.so/pct862806 精彩回顾 近年&#xff0c;知识图谱的重要性和实际应用逐步呈上升趋…

十大排序(总结+算法实现)

十大排序&#xff08;总结算法实现&#xff09; 十大排队的性能分析 冒泡排序 使用冒泡排序&#xff0c;时间复杂度为O(n^2),空间复杂度为O(1) 像气泡一样从低往上浮现 vector<int> bubbleSort(vector<int>nums) {int lengthnums.size();for(int i0;i<lengt…

PreScan快速入门到精通第三十七讲PreScan中使用深度摄像机

深度相机提供了一个 "相机"图像,其中包含深度值,而不是颜色。它提供的地面真实数据可用于校准或验证立体相机的深度计算。 对象配置 系统选项卡 变量 描述 …

antd——a-tree-select 树形选择控件 与 a-cascader 级联选择器 的对比——技能提升

在遇到 省市区多级联动数据的时候&#xff0c;经常会用到的就是 a-cascader级联选择器。 1.级联选择器的使用方法 1.1 需要指定数据源——options 数据结构是 对象数组嵌套——value/label/children <a-cascader :options"options" placeholder"Please sele…

SpringBoot3 正式发布:有哪些新玩法?

SpringBoot 3.0现已正式发布&#xff0c;可以在Maven Central中找到。 这是自四年前发布2.0以来的第一个主要版本。 它也是SpringBoot的第一个GA版本&#xff0c;提供了对Spring Framework 6.0和GraalVM的支持。 一文详解&#xff5c;从JDK8飞升到JDK17&#xff0c;再到未来…

Tesla M40 下Ubuntu anaconda pycharm安装

显卡&#xff1a;Tesla M40 24GB (2张&#xff09; 显卡驱动版本(推荐)&#xff1a;470.57.02 cuda版本&#xff1a;11.4 安装前需要&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;禁用nouveau驱动&#xff01;&#xff01;&#xff01;&#xff01;&#x…