JavaScript分支语句

60 阅读5分钟

四、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."
  1. 注意事项
  • 条件的布尔值if语句的条件表达式会被自动转换为布尔值。0nullundefinedNaN、空字符串""false都会被视为false,其他值被视为true
  • 使用括号if语句后面的代码块推荐使用大括号 {} 包裹,即使代码块只有一行,避免结构不清晰的错误。
if (score >= 90) console.log("Excellent"); // 不建议
if (score >= 90) { console.log("Excellent"); } // 建议
  1. 示例应用
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分支语句是条件判断的核心,适用于多种条件判断场景。掌握ifif...elseif...else if...else的组合使用,可以编写更加灵活的代码逻辑。

4.2 三元运算符

三元运算符(?:)是JavaScript中一种简洁的条件判断表达式,用于根据条件返回不同的结果。它是if...else语句的简化形式,通常在简单的条件判断中使用。

  1. 语法

三元运算符的语法结构如下:

condition ? expressionIfTrue : expressionIfFalse;
  • condition:判断条件,返回truefalse
  • 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"
  1. 注意事项
  • 可读性:嵌套三元运算符虽然能实现复杂条件判断,但不易阅读和理解。尽量避免多层嵌套。
  • 返回值:三元运算符返回的是一个值,可以直接赋值给变量或用于返回值中。

总结:三元运算符是一种简洁的条件判断方法,用于简化简单的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!"
  1. 注意事项
  • 严格相等比较switch语句的比较使用严格相等(===),不会进行类型转换。
  • break关键字:每个case结束后都需使用break,否则会继续执行后续case(称为“fall-through”现象)。
  • default位置default通常在最后,但位置并不严格固定。

4. switchif...else对比

  • switch语句结构清晰,适合单个变量有多个可能值的情况。
  • if...else语句更灵活,适合多种复杂条件判断和范围判断。

总结: switch语句适用于多条件判断且条件值是常量的情况,编写结构清晰、简洁的代码。

欲知后事如何,且听下回分解...