JavaScript中的三元运算符,三元运算符 (也称为条件运算符)可用于执行内联条件检查,而不是使用if...else语句。它使代码更短,更易读。它可用于根据条件为变量赋值,或根据条件执行表达式。

JavaScript中的三元运算符 句法

三元运算符接受三个操作数;它是JavaScript中唯一可以做到这一点的运算符。您提供要测试的条件,后跟问号,然后是两个用冒号分隔的表达式。如果条件被认为是真 ( truthy ),则执行第一个表达式;如果它被认为是假的,最后的表达式被执行。

它以下列格式使用:

condition ? expr1 : expr2

condition是要测试的条件。如果它的值被认为是trueexpr1则被执行。否则,如果其值被认为是falseexpr2则执行。

expr1并且expr2是任何一种表达。它们可以是变量、函数调用,甚至是其他条件。

例如:

1 > 2 ? console.log("You are right") : console.log('You are wrong');

使用三元运算符进行赋值

三元运算符最常见的用例之一是决定将哪个值分配给变量。通常,一个变量的值可能取决于另一个变量或条件的值。

虽然这可以使用if...else语句来完成,但它会使代码更长且可读性更差。例如:

const numbers = [1,2,3];
let message;
if (numbers.length > 2) {
  message = 'The numbers array is too long';
} else {
  message = 'The numbers array is short';
}

console.log(message); // "The numbers array is too long"

在此代码示例中,您首先定义变量message。然后,您使用if...else语句来确定变量的值。

这可以使用三元运算符在一行中简单地完成:

const numbers = [1,2,3];
let message = numbers.length > 2 ? 'The numbers array is too long' : 'The numbers array is short';

console.log(message); // "The numbers array is too long"

使用三元运算符执行表达式

三元运算符可用于执行任何类型的表达式。

例如,如果你想根据一个变量的值来决定运行哪个函数,你可以这样使用if...else语句:

if (feedback === "yes") {
  sayThankYou();
} else {
  saySorry();
}

这可以使用三元运算符在一行中完成:

feedback === "yes" ? sayThankYou() : saySorry();

如果feedback具有值yes,则将sayThankYou调用并执行该函数。否则,saySorry函数将被调用并执行。

使用三元运算符进行空值检查

在许多情况下,您可能正在处理可能具有或可能没有定义值的变量——例如,当从用户输入中检索结果时,或者当从服务器中检索数据时。

使用三元运算符,您可以通过在条件操作数的位置传递变量名称来检查变量是否存在nullundefined

这在变量是对象时特别有用。如果您尝试访问实际上是null或的对象的属性undefined,则会发生错误。首先检查对象是否实际设置可以帮助您避免错误。

例如:

let book = { name: 'Emma', author: 'Jane Austen' };
console.log(book ? book.name : 'No book'); // "Emma"

book = null;
console.log(book ? book.name : 'No book'); // "No book"

在这个代码块的第一部分,book是一个具有两个属性的对象——nameauthor。当在 上使用三元运算符时book,它会检查它不是nullor undefined。如果不是——意味着它有一个值——该name属性被访问并登录到控制台。否则,如果它为空,No book则改为登录到控制台。

由于book不是null,书名被记录在控制台中。但是,在第二部分中,当应用相同的条件时,三元运算符中的条件将失败,因为bookis null。因此,“No book”将记录在控制台中。

嵌套条件

尽管内联使用了三元运算符,但可以将多个条件用作三元运算符表达式的一部分。您可以嵌套或链接多个条件来执行类似于if...else if...else语句的条件检查。

例如,一个变量的值可能取决于多个条件。它可以使用以下方式实现if...else if...else

let score = '67';
let grade;
if (score < 50) {
  grade = 'F';
} else if (score < 70) {
  grade = 'D'
} else if (score < 80) {
  grade = 'C'
} else if (score < 90) {
  grade = 'B'
} else {
  grade = 'A'
}

console.log(grade); // "D"

在此代码块中,您测试变量的多个条件score以确定变量的字母分级。

这些相同的条件可以使用三元运算符执行,如下所示:

let score = '67';
let grade = score < 50 ? 'F'
  : score < 70 ? 'D'
  : score < 80 ? 'C'
  : score < 90 ? 'B'
  : 'A';

console.log(grade); // "D"

评估第一个条件,即score < 50。如果是true,则 的grade值为F。如果是false,则计算第二个表达式,即score < 70

这一直持续到所有条件都为false,这意味着等级的值为A,或者直到其中一个条件被评估为true并且其真值被分配给grade

代码笔示例

在此实例中,您可以测试三元运算符如何处理更多条件。

如果您输入的值小于 100,将显示消息“Too Low”。如果您输入的值大于 100,将显示消息“Too High”。如果输入 100,将显示“Perfect”消息。

结论

正如本教程示例中所解释的,JavaScript中的三元运算符有很多用例。if...else在许多情况下,三元运算符可以通过替换冗长的语句来增加代码的可读性。

JavaScript中的三元运算符 相关

JavaScript使用扩展运算符-极速阅读

JavaScript中不具备的数学函数

优惠券