逻辑 / 循环
This content is not available in your language yet.
在逻辑部分,我们会学习多个条件语句和循环语句。在学习这些语句之前,我们要先复习几个基础判断运算符。
判断运算符
常见的有 ==
、===
、!=
、!==
、&&
、||
、!
。
==
和 ===
==
是判断两个值是否相等,===
是判断两个值是否全等(值和类型都相等)。
const a = 1;const b = '1';console.log(a == b); // trueconsole.log(a === b); // false
!=
和 !==
!=
是判断两个值是否不相等,!==
是判断两个值是否不全等。
const a = 1;const b = '1';console.log(a != b); // falseconsole.log(a !== b); // true
&&
和 ||
&&
是逻辑与,||
是逻辑或。
const a = true;const b = false;console.log(a && b); // falseconsole.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 if
和 else
是在 if
语句的基础上增加了多个条件判断。if
是必须的,else if
和 else
是可选的,其中 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 时执行}
注意,在 value1
和 value2
对应的语句中,都出现了一个 break
语句,这个语句的作用是终止 switch
语句的执行。如果没有 break
语句,switch
语句会继续执行下一个 case
语句。在这个例子里,如果 expression
的值等于 value1
并且没有 break
语句,那么 case value1
和 case 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);}