简单地说,什么是?:(条件"三元")运算符,我如何使用它?

推荐答案

这是If-Else语句的一行简写.它称为条件运算符.1

下面是一个可以用条件运算符缩短的代码示例:

var userType;
if (userIsYoungerThan18) {
  userType = "Minor";
} else {
  userType = "Adult";
}

if (userIsYoungerThan21) {
  serveDrink("Grape Juice");
} else {
  serveDrink("Wine");
}

这可以用?:来缩短,如下所示:

var userType = userIsYoungerThan18 ? "Minor" : "Adult";

serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");

与所有表达式一样,条件运算符也可以用作具有副作用的独立语句,尽管这在缩小范围之外是unusual:

userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

它们甚至可以被链接起来:

serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');

不过,要小心,否则你会得到像这样复杂的代码:

var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;

1 Often called "the ternary operator," but in fact it's just a ternary operator [an operator accepting three operands]. It's the only one JavaScript currently has, though.

Javascript相关问答推荐

在HTML中使用脚本变量作为背景图像源

将数据从strapi提取到next.js,但响应延迟API URL

成帧器运动中的运动组件为何以收件箱开始?

在Vite React库中添加子模块路径

如何使用JavaScript将文本插入空div

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

构造HTML表单以使用表单数据创建对象数组

如何从html元素创建树 struct ?

虚拟滚动实现使向下滚动可滚动到末尾

Websocket错误—有一个或多个保留位开启:reserved1 = 1,reserved2 = 0,reserved3 = 0

如何发送从REST Api收到的PNG数据响应

查询参数中的JAVASCRIPT/REACT中的括号

删除加载页面时不存在的元素(JavaScript)

Google脚本数组映射函数横向输出

如何访问此数组中的值?

如何在FiRestore中的事务中使用getCountFromServer

使用createBrowserRoutVS BrowserRouter的Reaction路由

MUI迷你图:如何将$符号添加到MUI迷你图中的工具提示数据

P5play SecurityError:无法从';窗口';读取命名属性';Add';:阻止具有源的帧访问跨源帧

$GTE的mongoose 问题