news 2026/10/24 1:39:38

副队长JavaScript教程(23)-选择结构与代码块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
副队长JavaScript教程(23)-选择结构与代码块

点此查看所有教程、项目、源码导航

文章目录

  • 1. 背景
  • 2. 基础 if else 条件判断
  • 3. 缩进规范
  • 4. if else 的作用范围陷阱
  • 5. 代码块 {}
  • 6. 选择结构搭配代码块
  • 7. 编码规范建议
  • 8. 小结

1. 背景

上一篇我们讲解了 JS 语言最基本的结构 —— 顺序结构,JS 代码在一般情况下,会自上而下,依次执行每一行代码。

但是,正如生活肯定不会总是一帆风顺,总是充满着机遇和选择。我们的程序也不会一直平淡地执行,很多时候需要根据不同的情况做出不同的选择。为了模拟现实社会中不同情形下的选择,JS 语言提供了选择结构。

当然,选择是如此重要,所以不仅 JS 语言,其他高级语言如 C/C++/Java/Python/C# 等,也都具备选择结构,而且不约而同使用了同一个关键字:if。

2. 基础 if else 条件判断

JS 语言的选择结构依据if条件判断语句实现,格式如下:

if(条件)语句1;else语句2;

是不是很容易看懂?当条件成立时,会运行语句 1,否则运行语句 2。

那么如何算是条件成立,其实就是看条件的值,如果是布尔值 true,则为成立,如果是布尔值 false,则不成立。

我们来看一个例子,根据年龄判断一个人是否成年:

varage=30;if(age>=18)alert("已成年");elsealert("未成年");

运行结果如下:

分析这段程序,首先给 age 赋值 30,然后判断age>=18,判断结果为 true,所以执行 if 后面的代码即alert("已成年");,网页弹窗显示已成年。

3. 缩进规范

首先注意,下面两种写法都是语法正确的:

//写法1varage=30;if(age>=18)alert("已成年");elsealert("未成年");
// 写法2varage=30;if(age>=18)alert("已成年");elsealert("未成年");

但是放眼望去,想必也能发现写法 2 的代码更加条理,也更容易理解,这是因为写法 2 合理利用了缩进。

习惯上,我们可以将 if、else 后面代码缩进一个 tab 键(一般是 4 个空格)的距离,这样看起来代码更加美观。如果此时使用的是 VSCode 编辑器的话,可以直接按【Alt+Shift+F】,编辑器会自动将代码格式化为标准的缩进距离。

4. if else 的作用范围陷阱

这里有一个非常容易踩坑的知识点:if、else 语句的影响力,默认只限于紧跟它之后的一行代码。

看下面这段示例:

varage=30;if(age>=18)alert("已成年");//会执行该行代码elsealert("未成年");alert("需要保护");//会执行该行代码

我们的本意是,当用户 age>=18,则显示已成年;否则显示未成年、然后再显示需要保护。

但代码实际运行后,哪怕满足成年条件弹出 “已成年”,最后也一定会弹出 “需要保护”。
原因就是alert("需要保护");并不受 else 控制,它独立于 if-else 结构,不管条件判断是否成立,这一行都会执行。

我们调整格式,就能一眼看清它的归属关系:

varage=30;if(age>=18)alert("已成年");//条件判断成立时执行elsealert("未成年");//条件判断不成立时执行alert("需要保护");//不归if、else管理,不论条件判断是否成立,都会执行

5. 代码块 {}

想要让 if 或者 else 同时控制多行代码,就要用到代码块。

JS 中,使用一对大括号{}包裹起来的内容,就是一个代码块。

{vara=1;varb=2;varc=a+b;}

在单纯的顺序结构里面,代码块单独使用没有特殊效果,代码依旧自上而下执行。但是搭配选择结构的时候,代码块就发挥关键作用了:大括号内部的所有代码,会被当成一个整体。

6. 选择结构搭配代码块

我们可以在 if、else 后面加上大括号,写成代码块形式,这样 if、else 的控制范围就可以覆盖大括号里面的全部多行代码。

改写上面年龄的例子:

varage=30;if(age>=18){alert("已成年");}else{alert("未成年");alert("需要保护");}

由于 if、else 后面都使用了代码块,所以它俩的影响范围会覆盖其后代码块中的全部代码。

当上面代码执行时,由于age>=18成立,所以执行 if 后面代码块的内容,而 else 后面代码块中的两行代码属于 else 的控制范围,所以不会执行。

7. 编码规范建议

在程序员业界有一条普遍共识:优先使用代码块。哪怕 if、else 里面仅仅只有一行代码,也强烈建议写上大括号包裹起来。

这样做可以避免后续新增代码时,不小心踩中作用范围的 bug,代码可读性也更强。

8. 小结

生活中处处存在选择,小到选择衣服、选择食品,大到选择学校、选择城市、选择工作;同样,程序中也是处处需要选择,需要通过条件判断语句 if 实现选择。

而代码块{}是配合 if、else 的重要工具,用来批量管理多条语句,明确代码的归属范围,养成加上大括号的好习惯,可以避开很多隐蔽 bug。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/24 1:38:27

51单片机引脚详解:AT89S51与AT89C2051接线避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/24 1:38:13

FastCopy v4.02+ 文件加速复制:原理、调优与场景实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/24 1:38:08

知不足而奋进:个人成长操作系统实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/24 1:38:08

电网基波与谐波深度解析:从产生机理到治理方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/24 1:37:19

文件巴士3.0:端到端状态同步驱动的实时协作底座

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/24 1:37:07

AI编程时代,Spec是工程共识的交通信号灯

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华