一淘模板(56admin.com)带大家探讨一下 JavaScript 中三元运算符的语法及其一些常见用法,希望对大家有所帮助!

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

语法

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

它以以下格式使用:

condition ? expr1 : expr2

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

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

例如:

1 > 2 ? console.log("true") : console.log('false');

使用三元运算符进行赋值

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

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

const numbers = [1,2,3];
let message;
if (numbers.length > 2) {message = '数组太长';
} else {message = '数组太短';
}console.log(message); // 数组太长

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

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

const numbers = [1,2,3];
let message = numbers.length > 2 ? '数组太长' : '数组太短';console.log(message); // 数组太长

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

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

例如,如果您想根据变量的值决定运行哪个函数,您可以使用以下if...else语句执行此操作:

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

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

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

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

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

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

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

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

例如:

let book = { name: '小明', works: '斗破苍穹' };
console.log(book ? book.name : '张三'); // "小明"book = null;
console.log(book ? book.name : '张三'); // "张三"

在此代码块的第一部分,book是一个具有两个属性的对象 -nameworks在上使用三元运算符时book,它会检查它是否不是nullor undefined。如果不是——意味着它有一个值——name则访问该属性并将输出控制台。否则,如果它为空,张三输出控制台。

因为bookis not null,所以书名会记录在控制台中。但是,在第二部分中,当应用相同的条件时,三元运算符中的条件将失败,因为bookis null。因此,“张三”输出控制台。

嵌套条件

尽管三元运算符是内联使用的,但可以将多个条件用作三元运算符表达式的一部分。您可以嵌套或链接多个条件来执行类似于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,则会显示“太低”消息。如果您输入的值大于 100,则会显示消息“太高”。如果输入 100,将显示“完美”消息。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><style>#result {display: block;}button,#result {margin-top: 10px;}</style></head><body><div><label for="number">输入一个数字</label><input type="number" name="number" id="number" /></div><button>提交</button><span id="result"></span></body><script>const button = document.querySelector('button');const numberElm = document.querySelector('#number');const resultElm = document.querySelector('#result');button.addEventListener('click', function() {resultElm.textContent = numberElm.value > 100 ? '太高' : (numberElm.value < 100 ? '太低' : '完美');});</script>
</html>

结论

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

详解JS中三元运算符的语法和常见用法相关推荐

  1. 详解JS中的Object

    详解 JS 中的 Object 从本质上看,Object 是一个构造函数,用于创建对象. 一.Object 构造函数的属性 在 Object 中声明的属性只有两个: Object.length -- ...

  2. c 语言中 %是什么运算符,C 语言基础----详解C中的运算符

    C语言中又有哪些运算符呢? 如下所示: ※ 算术运算符 ※ 赋值运算符 ※ 关系运算符 ※ 逻辑运算符 ※ 三目运算符 C语言基本算术运算符如下表: 除法运算中注意: 如果相除的两个数都是整数的话,则 ...

  3. php js实现流程图,详解js中构造流程图的核心技术JsPlumb(2)_javascript技巧

    前言:上篇详解js中构造流程图的核心技术JsPlumb介绍了下JsPlumb在浏览器里面画流程图的效果展示,以及简单的JsPlumb代码示例.这篇还是接着来看看各个效果的代码说明. 一.设置连线的样式 ...

  4. 详解js中的继承(一)

    详解js中的继承(一) 前言 准备知识 1.构造函数,实例 2.原型对象 3.构造函数,原型对象和实例的关系 继承 原型链 小结 前言 通过[某种方式]让一个对象可以访问到另一个对象中的属性和方法,我 ...

  5. python apply lambda if_详解Python中的map、lambda和apply用法

    Hello大家好,欢迎来到[统计GO],本公众号内容主要针对数据分析的爱好者,不定期分享一些好用的数据分析工具和机器学习资料,以及一些求职必备技能,帮助大家花更少的时间学更多的知识. 今天为大家推荐的 ...

  6. html中隐式转换成数字,详解JS中的隐式类型转换

    JS中隐式类型转换 JS中的数据类型 JS中的数据类型分为两大类: 1.基本数据类型: 1.String 字符串 表示一段文本,例如:人的姓名.地址等 2.Number 数值 3.Boolean 布尔 ...

  7. 详解js中typeof、instanceof与constructor

    typeof返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,包括number,boolean,string,object,undefined,function.语法为typeof(da ...

  8. 详解JS中的原型与继承

    每当我们提起原型链时不免会想到原型对象,对象的原型,还有众多的继承方式.于是prototype.[[prototype]].constructor等等难免在头脑中打架. 然而原型其实并不是什么高大上的 ...

  9. python格式化字符串语法_详解Python3 中的字符串格式化语法

    一.旧式的字符串格式化 % 操作符 参考以下示例: >>> name = "Eric" >>> "Hello, %s." % ...

  10. 详解js中的undefined、NaN、null

    js中三大特殊的值: undefined NaN null 1.undefined 变量声明了但为赋值 console.log(typeof undefined); //undefined conso ...

最新文章

  1. HDU - 3065 病毒侵袭持续中(AC自动机)
  2. 切换用户_Mac如何在多个用户间快速切换?
  3. 同底数幂比较大小方法_知识体系构建:初中数学4大知识点及10大解题方法总结(干货)...
  4. tableViewCell的操作
  5. Imgproc.findContours函数
  6. NHibernate源码分析开篇
  7. 克隆网站工具_4 种开源云安全工具
  8. 如何解决Mac使用向日葵(sunlogin)经常无法打开 connect is error
  9. 互联网知识变现,不起眼利润高的冷门行业有哪些?
  10. 史上最全Python快速入门教程
  11. 【渝粤教育】国家开放大学2018年秋季 1355T高级英语(2) 参考试题
  12. 官网下载Eclipse详细步骤
  13. 我用Python爬取美食网站3032个菜谱并分析,没有我不会做的菜!
  14. 用过滤器防sql注入
  15. 东南亚lazada平台分跨境店和本土店两种,二者的区别都写在这里了
  16. 史上最全网络安全面试题总结
  17. cocosCreator日历插件
  18. 67.输入若干行文本,每行以回车结束,以 ctrl+z 作为结束符,统计其行数
  19. Python核心编程读书笔记
  20. Code Clinic: R 代码诊所:R语言 Lynda课程中文字幕

热门文章

  1. U-GAT-IT 翻译
  2. 《C++ Primer Plus》学习笔记——共用体union
  3. 【oracle19c静默安装RAC】
  4. Android 音频管理器AudioManager类介绍
  5. 菱形的常见图案_菱形图案,简约而不简单
  6. STM32CubeMX安装(全图文安装步骤,一步不落下)
  7. github提交隐藏私密信息
  8. fastboot简介(android烧录指令)
  9. fastboot与fastbootd介绍
  10. 如何写出一篇好的软文?软文撰写的一些注意事项!