程序的执行顺序
在程序开发中,程序有三种不同的执行方式:
- 顺序结构:按从上到下的顺序执行代码。
- 循环结构:重复执行特定代码。
- 分支结构:根据条件判断,决定执行代码的分支。
代码块
代码块是多行代码的集合,用花括号 {} 包围。
在 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("计算出错");
}
-
switch 语句有至少一个 case 代码块和一个可选的 default 代码块
-
case穿透问题:
- 一条case语句结束后,会自动执行下一个case的语句,这种现象被称之为case穿透
- 通过在每个case的代码块后添加break关键字可以解决case穿透问题
-
case中的匹配使用的是全等运算符
循环结构
循环用于重复执行代码块。
循环也被称之为 遍历(traversal)或者迭代(iteration)
在JavaScript中支持三种循环方式:
- while循环
- do..while循环
- for循环
其中 while 和 do-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:跳过本次循环,继续下一次。