JS - 程序执行顺序

451 阅读3分钟

程序的执行顺序

在程序开发中,程序有三种不同的执行方式:

  1. 顺序结构:按从上到下的顺序执行代码。
  2. 循环结构:重复执行特定代码。
  3. 分支结构:根据条件判断,决定执行代码的分支。

image.png

代码块

代码块是多行代码的集合,用花括号 {} 包围。

在 ES6 之前,代码块没有自己的作用域,只有全局作用域和函数作用域。ES6 后,代码块拥有了独立的作用域。

 // 下面是最简单的代码块 --- 这种代码块和顺序执行语句之间没有任何的区别
 // 代码块后边原则上是可以添加分号的,但是一般开发中并不推荐这么做
 {
   let num1 = 23
   let num2 = 31
 ​
   console.log(num1 + num2)
 }
 // JavaScript中常见的代码块
 ​
 let num = 23
 ​
 // 1. 代码块可以位于循环和分支语句中
 if (num > 20) {
   // 这里代码位于一段代码块中
 }
 ​
 // 2. 代码块也可以位于函数中
 function foo() {
   // 这里的代码也位于一段代码块中
 }

分支结构

分支结构的代码就是让我们根据条件来决定代码的执行

分支结构的语句又被称为判断结构或者选择结构

JavaScript中常见的分支结构有:

  • if分支结构
  • switch分支结构

if分支结构

  • 单分支语句**:if 语句计算条件表达式,如果结果为 true,则执行代码块。
 if (num > 20) {
   console.log("大于20");
 }
  • 多分支语句if..else..,当条件不成立时执行 else 块。
 if (num > 20) {
   console.log("大于20");
 } else {
   console.log("小于等于20");
 }
  • 多条件判断if..else if..else..,用于判断多个条件。
 if (num > 20) {
   console.log("大于20");
 } else if (num === 20) {
   console.log("等于20");
 } else {
   console.log("小于20");
 }

条件运算符(三元运算符)

三元运算符是 if-else 的简写

 // 计算条件结果,如果结果为真,则返回 value1,否则返回 value2
 var result = condition ? value1 : value2;

注意: 三目运算符的优先级比普通的数学运算符的优先级低

 console.log(2 + 3 > 4 ? -1 : 1) // => -1
 console.log(2 + (3 > 4 ? -1 : 1)) // => 3

switch语句

switch 用于根据表达式的结果执行不同的代码块。

 const num = 2;
 ​
 switch (num % 2) {
   case 0:
     console.log("偶数");
     break;
   case 1:
     console.log("奇数");
     break;
   default:
     console.log("计算出错");
 }
  1. switch 语句有至少一个 case 代码块和一个可选的 default 代码块

  2. case穿透问题:

    • 一条case语句结束后,会自动执行下一个case的语句,这种现象被称之为case穿透
    • 通过在每个case的代码块后添加break关键字可以解决case穿透问题
  3. case中的匹配使用的是全等运算符

循环结构

循环用于重复执行代码块。

循环也被称之为 遍历(traversal)或者迭代(iteration)

在JavaScript中支持三种循环方式:

  • while循环
  • do..while循环
  • for循环

其中 whiledo-while 用来执行未知次数的循环,for用来执行已知次数的循环

循环必须存在结束条件,否则将构成死循环

while 循环

 while (condition) {
   // 执行代码
 }

do-while 循环

不论条件是否成立,do 块至少执行一次。

 do {
   // 执行代码
 } while (condition);

for 循环

for 循环用于已知次数的循环。

 for (let i = 0; i < 100; i++) {
   console.log(i);
 }

循环控制

  • break:跳出循环。
  • continue:跳过本次循环,继续下一次。