Javascript 零基础教程

JavaScript 条件语句

条件语句可以让我们根据特定的条件控制代码的执行流程

简单来说,它们让你的程序能够“做决定”,执行不同的代码路径,并对各种输入做出动态反应。如果没有条件语句,程序就只能傻傻地从头执行到尾,无法处理复杂的场景或用户交互。

1. if 语句:有条件地执行代码

if 语句是条件语句最基本的形式。它允许你仅在指定条件为真(true)时才执行一段代码。

1.1 语法

if (条件) {
  // 如果条件为真 (true),则执行此处的代码
}
  • 条件 (condition): 一个计算结果为 true(真)或 false(假)的表达式。这可以是一个简单的比较(例如 x > 5),也可以是复杂的逻辑表达式。
  • {} (花括号): 花括号包裹了当条件为真时要执行的代码块。
    • 注意: 虽然如果代码块只有一行,技术上可以省略花括号,但这是一种不好的习惯。为了代码的可读性和避免日后出错,请始终加上花括号

1.2 示例 1:基础 if 语句

let age = 20;

if (age >= 18) {
  console.log("你已经成年。");
}

在这个例子中,程序会评估条件 age >= 18。因为 age 是 20,条件为真,所以控制台会打印出“你已经成年。”

1.3 示例 2:使用布尔变量的 if 语句

let isRaining = true; // isRaining 意为“正在下雨”

if (isRaining) {
  console.log("带把伞!");
}

这里,条件直接就是一个布尔变量 isRaining。因为它的值是 true,所以会打印“带把伞!”。

1.3 示例 3:省略花括号(不推荐)

let number = 10;

if (number > 5)
  console.log("数字大于 5。"); // 这行代码会根据条件执行
  console.log("这行代码永远会执行。"); // 警告:这行代码与 if 无关,永远会执行!

虽然这段代码在语法上没问题,但我们强烈不建议这样写。
只有第一个 console.log 属于 if 语句。第二个 console.log 无论条件如何都会执行。这会导致意外的 Bug 并让代码难以阅读。请始终使用花括号 {}。

2. else 语句:当条件为假时执行

else 语句提供了一个备选方案。当 if 中的条件为假(false)时,程序会执行 else 代码块中的内容。

2.1 语法

if (条件) {
  // 如果条件为真,执行这里
} else {
  // 如果条件为假,执行这里
}

2.2 示例 1:if...else 语句

let temperature = 15;

if (temperature > 20) {
  console.log("这是温暖的一天。");
} else {
  console.log("这是凉爽的一天。");
}

在这个例子中,条件 temperature > 20 被评估。因为 temperature 是 15,条件为假,程序跳过第一个块,直接执行 else 块,打印出“这是凉爽的一天。”

2.2 示例 2:检查偶数或奇数

let num = 7;

if (num % 2 === 0) {
  console.log(num + " 是一个偶数。");
} else {
  console.log(num + " 是一个奇数。");
}

这个例子使用了取模运算符 (%)。如果 num 除以 2 的余数是 0,它就是偶数;否则,它就是奇数。

3. else if 语句:处理多个条件

else if 语句允许你按顺序检查多个条件。它提供了一种基于不同情况执行不同代码块的方法。

3.1 语法

if (条件1) {
  // 如果 条件1 为真,执行这里
} else if (条件2) {
  // 如果 条件1 为假 且 条件2 为真,执行这里
} else {
  // 如果 条件1 和 条件2 都为假,执行这里
}

你可以根据需要使用任意数量的 else if 语句。最后的 else 块是可选的,只有当前面所有条件都不满足时才会执行。

3.2 示例 1:if...else if...else 语句

let score = 75;

if (score >= 90) {
  console.log("等级:A");
} else if (score >= 80) {
  console.log("等级:B");
} else if (score >= 70) {
  console.log("等级:C");
} else if (score >= 60) {
  console.log("等级:D");
} else {
  console.log("等级:F");
}

在这个例子中,代码按顺序检查 score 的值。一旦遇到第一个为真的条件,就会执行对应的代码块,并跳过剩余的所有检查。在这里,score >= 70 是第一个满足的条件,所以打印“等级:C”。

3.3 示例 2:判断季节

let month = 4; // 四月

if (month >= 3 && month <= 5) {
  console.log("春天");
} else if (month >= 6 && month <= 8) {
  console.log("夏天");
} else if (month >= 9 && month <= 11) {
  console.log("秋天");
} else {
  console.log("冬天");
}

这个例子使用了逻辑运算符 (&&,意为“并且”) 来检查月份是否在特定范围内。

3.4 else if 的重要注意事项

  1. 顺序很重要: 条件是按从上到下的顺序评估的。一旦某个条件满足,剩下的 else ifelse 都会被忽略。因此,你需要按照逻辑顺序排列条件。
  2. 排他性else if 结构意味着这些条件是互斥的。最终只有一个代码块会被执行。
  3. 可选的 else: 最后的 else 是可选的。如果你省略它,并且所有条件都不满足,那么什么都不会发生。

4. 嵌套条件语句 (Nesting)

你可以在一个 ifelse ifelse 语句内部再放入另一个条件语句,这叫做嵌套。它可以用来创建更复杂的决策逻辑。

4.1 示例:嵌套 if 语句

let age = 25;
let hasLicense = true; // 是否有驾照

if (age >= 18) {
  console.log("你的年龄足够开车。");
  
  // 内部的 if 语句
  if (hasLicense) {
    console.log("你被允许开车。");
  } else {
    console.log("你需要驾照才能开车。");
  }
  
} else {
  console.log("你的年龄还不够开车。");
}

在这个例子中,外层的 if 先检查年龄。如果年龄达标,程序才会进入内部,检查是否有驾照。

提示: 虽然嵌套是允许的,但过深的嵌套会让代码变得极其难读。在未来的学习中,我们会通过逻辑运算符或拆分函数来优化它。