跳转到内容

逻辑 / 循环

在逻辑部分,我们会学习多个条件语句和循环语句。在学习这些语句之前,我们要先复习几个基础判断运算符。

判断运算符

常见的有 =====!=!==&&||!

=====

== 是判断两个值是否相等,=== 是判断两个值是否全等(值和类型都相等)。

const a = 1;
const b = '1';
console.log(a == b); // true
console.log(a === b); // false

!=!==

!= 是判断两个值是否不相等,!== 是判断两个值是否不全等。

const a = 1;
const b = '1';
console.log(a != b); // false
console.log(a !== b); // true

&&||

&& 是逻辑与,|| 是逻辑或。

const a = true;
const b = false;
console.log(a && b); // false
console.log(a || b); // true

除此之外,&&还可以用作条件判断,例如当 a 为真时,设置 b 的值为 1

const a = true;
let b = 0;
a && (b = 1);
console.log(b); // 1

!

! 是逻辑非。

const a = true;
console.log(!a); // false

三元运算符

三元运算符是一种简单的条件判断语句,语法是{condition 条件} ? {true statement 真语句} : {false statement 假语句}
在下面这个例子中,如果 a 为真,则 b 的值为 1,否则为 0

const a = true;
const b = a ? 1 : 0;
console.log(b); // 1

if … else if … else

if 语句是最基本的条件判断语句,else ifelse 是在 if 语句的基础上增加了多个条件判断。if 是必须的,else ifelse 是可选的,其中 else if 可以有多个,else 只能有一个。基础语法如下:

if (condition1) {
// 当 condition1 为真时执行
} else if (condition2) {
// 当 condition1 为假且 condition2 为真时执行
} else {
// 当 condition1 和 condition2 都为假时执行
}

switch … case

当需要通过一个语句的多个结果来执行不同的操作时,我们可以使用 switch 语句。switch 语句会根据一个表达式的值来匹配 case 语句,如果匹配成功,则执行对应的 case 语句。switch 语句的基础语法如下:

switch (expression) {
case value1:
// 当 expression 的值等于 value1 时执行
break;
case value2:
// 当 expression 的值等于 value2 时执行
break;
default:
// 当 expression 的值不等于任何 case 时执行
}

注意,在 value1value2 对应的语句中,都出现了一个 break 语句,这个语句的作用是终止 switch 语句的执行。如果没有 break 语句,switch 语句会继续执行下一个 case 语句。在这个例子里,如果 expression 的值等于 value1 并且没有 break 语句,那么 case value1case value2 对应的两个语句都会被执行。
之所以 default 没有 break 语句,是因为 default 语句是 switch 语句的最后一个语句,所以不需要终止 switch 语句的执行。

for 循环

for 循环是一种常见的循环语句,它会重复执行一个语句块,直到指定的条件为假。for 循环的基础语法如下:

for (initialization; condition; increment) {
// initialization 用于初始化计数器
// condition 用于判断是否继续执行循环
// increment 用于更新计数器
}

一个例子,在这里会执行 10 次 console.log(i)

for (let i = 0; i < 10; i++) {
// 因为 i 从 0 开始,所以会执行 10 次
console.log(i);
}

for … in 循环

for ... in 循环在 for 循环的基础上增加了对对象的遍历。for ... in 循环的基础语法如下:

for (variable in object) {
// variable 为对象的属性名
// object 为要遍历的对象
}

一个例子,在这里会遍历一个数组的所有元素。

const arr = [1, 2, 3];
for (const i in arr) {
console.log(arr[i]);
}

foreach 循环

类似于 for ... in 循环,foreach 循环也是用于遍历对象的。foreach 循环的基础语法如下:

object.forEach((value, index) => {
// value 为对象的属性值
// index 为对象的属性名
});

这里的 index 可以省略,如果省略。还是一样,给出一个遍历数组的例子。

const arr = [1, 2, 3];
arr.forEach(value => {
console.log(value);
});

while 循环

while 循环会在指定的条件为真时重复执行一个语句块。while 循环的基础语法如下:

while (condition) {
// condition 用于判断是否继续执行循环
}

在这种写法中,如果 condition 为假,那么一次循环都不会执行。如果想要让循环至少执行一次,可以使用 do ... while 循环。这样就会把判断条件放在循环的最后,确保循环至少执行一次。

do {
// condition 用于判断是否继续执行循环
} while (condition);

break 和 continue

break 语句用于终止循环,continue 语句用于跳过当前循环的剩余代码,直接进入下一次循环。在之前的 switch 语句中,我们已经看到了 break 语句的用法。在下面的例子中,我们会看到 continue 语句的用法。

for (let i = 0; i < 10; i++) {
if (i % 2 === 0) {
continue; // 跳过偶数
}
console.log(i);
}