Javascript 零基础教程

JavaScript 三元运算符

三元运算符是 JavaScript 中一个强大的工具,它允许你编写简洁的条件表达式。

它是将 if...else 语句写成一行的快捷方式。

掌握三元运算符可以使你的代码更具可读性和效率,尤其是在处理简单的条件赋值时。

1. 理解三元运算符

三元运算符是一个条件运算符,它接受三个操作数:一个条件、一个条件为真值(truthy)时执行的表达式,以及一个条件为假值(falsy)时执行的表达式。

1.1 语法

三元运算符的语法如下:

condition ? expressionIfTrue : expressionIfFalse;
  • condition (条件): 一个计算结果为 truefalse 的表达式。
  • expressionIfTrue (为真时的表达式): 如果 conditiontrue,则执行此表达式。
  • expressionIfFalse (为假时的表达式): 如果 conditionfalse,则执行此表达式。

1.2 它是如何工作的 ?

三元运算符会对 condition 进行评估。如果 condition 是真值,它返回 expressionIfTrue 的值。否则,它返回 expressionIfFalse 的值。

2. 三元运算符用法示例

让我们通过一些示例来探讨三元运算符如何在不同场景中使用。

2.1 基础示例:判断偶数或奇数

let number = 7;
let result = (number % 2 === 0) ? "偶数" : "奇数";
console.log(result); // 输出: 奇数

number = 4;
result = (number % 2 === 0) ? "偶数" : "奇数";
console.log(result); // 输出: 偶数

在这个例子中,我们使用三元运算符来确定一个数字是偶数还是奇数。条件 number % 2 === 0 检查数字是否能被 2 整除。如果是,返回表达式 "偶数";否则,返回表达式 "奇数"

2.2 基于条件赋值

let age = 20;
let isAdult = (age >= 18) ? true : false;
console.log(isAdult); // 输出: true

age = 16;
isAdult = (age >= 18) ? true : false;
console.log(isAdult); // 输出: false

在这里,我们使用三元运算符根据 age(年龄)将布尔值赋给 isAdult(是否成年)变量。如果 age 大于或等于 18,赋值 true;否则,赋值 false

2.3 从函数返回值

function checkSign(number) {
  return (number > 0) ? "正数" : (number < 0) ? "负数" : "零";
}

console.log(checkSign(5));    // 输出: 正数
console.log(checkSign(-2));   // 输出: 负数
console.log(checkSign(0));    // 输出: 零

这个例子演示了如何在函数内部使用三元运算符,根据多个条件返回不同的值。这也展示了三元运算符是可以链式调用(嵌套)以处理更复杂逻辑的,尽管过度的嵌套会降低可读性。

2.4 在字符串中使用三元运算符

let isLoggedIn = true;
let message = isLoggedIn ? "欢迎回来!" : "请登录。";
console.log(message); // 输出: 欢迎回来!

isLoggedIn = false;
message = isLoggedIn ? "欢迎回来!" : "请登录。";
console.log(message); // 输出: 请登录。

在这种情况下,三元运算符用于根据用户是否登录来显示不同的消息。

3. 嵌套三元运算符

三元运算符可以嵌套以处理更复杂的条件。然而,谨慎地使用嵌套很重要,因为它会让代码变得难以阅读。

let score = 75;
let grade = (score >= 90) ? "A" : (score >= 80) ? "B" : (score >= 70) ? "C" : "D";
console.log(grade); // 输出: C

在这个例子中,我们要根据分数分配等级。虽然这能工作,但深度嵌套的三元运算符会变得难以理解。在这种情况下,使用 if...else if...else 语句通常可读性更好。

4. 三元运算符 vs. if...else 语句

三元运算符是 if...else 语句的简洁替代方案,但它并不总是最佳选择。以下是一个对比:

特性三元运算符if...else 语句
简洁性对于简单条件更简洁更冗长
可读性对于复杂条件可读性较差对于复杂条件通常更易读
用例最适合简单的条件赋值返回值适合具有多个分支的复杂逻辑
代码块无法在每个分支中执行多个语句可以在代码块内执行多个语句

4.1 何时使用三元运算符

  • 用于简单的条件赋值。
  • 用于基于条件返回一个值。
  • 当你想要编写简洁的代码时。

4.2 何时使用 if...else 语句

  • 用于具有多个分支的复杂条件。
  • 当你是需要在每个分支中执行多个语句(不仅仅是返回一个值)时。
  • 当可读性比简洁性更重要时。