四、JavaScript分支语句
4.1 if分支语句
在JavaScript中,if分支语句用于根据条件来控制代码的执行流程。if语句会判断一个条件是否为真(true),如果条件为真,则执行对应的代码块;否则跳过代码块或进入其它分支。以下是if分支语句的常见形式:
1. if语句
if语句的基本形式包含一个条件表达式,如果条件表达式的结果为true,则执行代码块。
let age = 18;
if (age >= 18) {
console.log("You are an adult.");
}
// 输出: "You are an adult."
2. if...else语句
if...else语句包含一个if代码块和一个else代码块。如果条件为true,则执行if代码块;否则,执行else代码块。
let age = 16;
if (age >= 18) {
console.log("You are an adult.");
} else {
console.log("You are a minor.");
}
// 输出: "You are a minor."
3. if...else if...else语句
if...else if...else语句用于在多种条件之间进行选择。条件从上至下逐一判断,如果有一个条件为true,则执行相应代码块,并跳过后续条件。
let score = 85;
if (score >= 90) {
console.log("Grade A");
} else if (score >= 80) {
console.log("Grade B");
} else if (score >= 70) {
console.log("Grade C");
} else {
console.log("Grade D");
}
// 输出: "Grade B"
4. 嵌套的 if 语句
可以将一个if语句嵌套在另一个if语句中,以处理更加复杂的条件判断。
let age = 25;
let isStudent = true;
if (age >= 18) {
if (isStudent) {
console.log("You are an adult student.");
} else {
console.log("You are an adult.");
}
} else {
console.log("You are a minor.");
}
// 输出: "You are an adult student."
- 注意事项
- 条件的布尔值:
if语句的条件表达式会被自动转换为布尔值。0、null、undefined、NaN、空字符串""和false都会被视为false,其他值被视为true。 - 使用括号:
if语句后面的代码块推荐使用大括号{}包裹,即使代码块只有一行,避免结构不清晰的错误。
if (score >= 90) console.log("Excellent"); // 不建议
if (score >= 90) { console.log("Excellent"); } // 建议
- 示例应用
let temperature = 25;
if (temperature > 30) {
console.log("It's a hot day.");
} else if (temperature > 20) {
console.log("It's a warm day.");
} else {
console.log("It's a cold day.");
}
// 输出: "It's a warm day."
总结:if分支语句是条件判断的核心,适用于多种条件判断场景。掌握if、if...else、if...else if...else的组合使用,可以编写更加灵活的代码逻辑。
4.2 三元运算符
三元运算符(?:)是JavaScript中一种简洁的条件判断表达式,用于根据条件返回不同的结果。它是if...else语句的简化形式,通常在简单的条件判断中使用。
- 语法
三元运算符的语法结构如下:
condition ? expressionIfTrue : expressionIfFalse;
condition:判断条件,返回true或false。expressionIfTrue:当条件为true时执行的表达式。expressionIfFalse:当条件为false时执行的表达式。
2. 示例用法
示例1:简单条件判断
let age = 18;
let accessAllowed = age >= 18 ? "Access granted" : "Access denied";
console.log(accessAllowed); // 输出: "Access granted"
示例2:嵌套三元运算符
可以将多个三元运算符嵌套使用,但注意过多嵌套会降低代码的可读性。
let score = 85;
let grade = score >= 90 ? "A" : score >= 80 ? "B" : score >= 70 ? "C" : "D";
console.log(grade); // 输出: "B"
3. 三元运算符与if...else的对比
- 三元运算符更简洁,适合简单的条件判断,通常用于赋值或直接返回结果。
if...else语句更适合复杂的条件判断或包含多个代码块的逻辑。
示例对比
使用if...else语句:
let age = 18;
let accessAllowed;
if (age >= 18) {
accessAllowed = "Access granted";
} else {
accessAllowed = "Access denied";
}
console.log(accessAllowed); // 输出: "Access granted"
使用三元运算符:
let age = 18;
let accessAllowed = age >= 18 ? "Access granted" : "Access denied";
console.log(accessAllowed); // 输出: "Access granted"
- 注意事项
- 可读性:嵌套三元运算符虽然能实现复杂条件判断,但不易阅读和理解。尽量避免多层嵌套。
- 返回值:三元运算符返回的是一个值,可以直接赋值给变量或用于返回值中。
总结:三元运算符是一种简洁的条件判断方法,用于简化简单的if...else判断逻辑。
4.3 switch语句
switch语句在JavaScript中用于根据变量的值选择并执行不同的代码块。与多个if...else if...else结构相比,switch语句使代码更简洁、可读性更强,特别适合处理多个条件分支的情况。
1. 语法
switch (expression) {
case value1:
// 当 expression 等于 value1 时执行的代码
break;
case value2:
// 当 expression 等于 value2 时执行的代码
break;
default:
// 当 expression 不等于任何一个 case 值时执行的代码
}
expression:要进行匹配的表达式或变量。case:每个case后的值与expression进行严格相等比较(===)。break:用于结束当前case的代码执行,防止继续执行后面的case。default:当expression的值不匹配任何case时执行的代码块,可选。
2. 示例用法
示例1:简单的switch语句
let fruit = "apple";
switch (fruit) {
case "apple":
console.log("This is an apple.");
break;
case "banana":
console.log("This is a banana.");
break;
case "orange":
console.log("This is an orange.");
break;
default:
console.log("Unknown fruit.");
}
// 输出: "This is an apple."
示例2:使用default分支
default分支在switch结构中可选,当没有匹配的case时执行:
let day = "Saturday";
switch (day) {
case "Monday":
case "Tuesday":
case "Wednesday":
case "Thursday":
case "Friday":
console.log("It's a weekday.");
break;
case "Saturday":
case "Sunday":
console.log("It's a weekend.");
break;
default:
console.log("Not a valid day.");
}
// 输出: "It's a weekend."
示例3:多个case共享代码
可以在多个case中写相同的代码,将它们组合在一起,以实现相同处理逻辑:
let score = "B";
switch (score) {
case "A":
case "B":
console.log("Excellent!");
break;
case "C":
console.log("Good job!");
break;
default:
console.log("Keep trying!");
}
// 输出: "Excellent!"
- 注意事项
- 严格相等比较:
switch语句的比较使用严格相等(===),不会进行类型转换。 break关键字:每个case结束后都需使用break,否则会继续执行后续case(称为“fall-through”现象)。default位置:default通常在最后,但位置并不严格固定。
4. switch与if...else对比
switch语句结构清晰,适合单个变量有多个可能值的情况。if...else语句更灵活,适合多种复杂条件判断和范围判断。
总结: switch语句适用于多条件判断且条件值是常量的情况,编写结构清晰、简洁的代码。
欲知后事如何,且听下回分解...