你真的会用三元运算符吗?

news2024/11/25 10:39:52

在我们日常搬砖中,我们经常会看到三元运算符,但是你了解三元运算符到底是怎么用吗?接下来我们就下来详细介绍一下三元运算符

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

什么是三元运算符?

三元运算符在JavaScript中的的表现形式是 ?,它的作用是“计算在它之前传递的条件表达式,并根据条件表达式的结果判断应该执行问号(?)后的哪一段代码”。(?)后接两端不同情况下该执行的代码,代码之前用冒号分隔, :

它的语法如下所示:

条件表达式 ? 结果为true执行的代码 : 结果为false执行的代码;
复制代码

当我们的条件表达式运行结果为true时,执行(:)冒号前的代码,当条件表达式结果为false时,执行(:)冒号后面的代码。

如何使用三元运算符?

当我们需要根据某一个表达式的运算结果来决定我们的接下来要执行的代码时,我们就可以使用三元运算符。

//const student = false;  //第一种情况为student==false,执行Welcome, Guest!const student = 'zayyo';  //第二种情况为true,执行Welcome, zayyo!const welcomeStudent = student ? `Welcome, ${student}!` : "Welcome, Guest!";
console.log(welcomeStudent); // Welcome, zayyo!复制代码

在上面的代码中,我们把studnent当做布尔条件去求值,当student为true时,我们把(:)冒号前的值赋给welcomeStudent,当student的值为false时,我们把(:)冒号后的值赋给welcomeStudent。所以三元运算符又被称为条件运算符,只有在满足条件的情况下才会执行正确的代码

在JavaScript中false0""nullundefinedNaN都被判定为假值(等同于false),除此之外的其他值都被判定为真值(等同于true)。

那什么时候使用三元运算符呢?

我们常见的三元运算符例子的都只有两种结果,要么为true,要么为false。与之类似的代码结构就只有我们的if/else选择结构,我们可以用三元运算符来代替if/else的使用,用来增加代码的可读性和简洁性

例子:

// 使用if/else
{
constwelcomeStudent = student => {
  if (student) {
    return`Welcome, ${student.name}!`;
  } else {
    return"Welcome, Guest!";
  };
};

console.log(welcomeStudent({ name: 'zayyo' })); // Welcome, zayyo!console.log(welcomeStudent()); // Welcome, Guest!
}

// 使用三元运算符
{
constwelcomeStudent = student => student ? `Welcome, ${student.name}!` : "Welcome, Guest!";

console.log(welcomeStudent({ name: 'zayyo' })); // Welcome, zayyo!console.log(welcomeStudent()); // Welcome, Guest!
}
复制代码

在上面的例子中,我们不难看出三元运算符有着更好的可读性和简洁性

链式三元运算符

那如果我们遇见更加复杂的代码,如if/else if/else或者是switch的结果我们如何去使用三元运算符去优化代码呢?

我们可以使用链式三元运算符去实现
// 使用 if/else if/elseconstgrade = mark => {
  if (mark > 100) {
    return;
  } elseif (mark > 80) {
    return'优秀';
  } elseif (mark > 70) {
    return'良好';
  } elseif (mark > 60) {
    return'及格';
  } elseif (mark > 50) {
    return'不及格';
  } else {
    return'差';
  };
};

console.log(grade(100)); // 优秀console.log(grade(1000)); // undefinedconsole.log(grade(10)); // 差// 使用链式三元运算符constgrade = mark => mark > 100 ? undefined
                      : mark > 80 ? '优秀'
                      : mark > 70 ? '良好'
                      : mark > 60 ? '及格'
                      : mark > 50 ? '不及格'
                      : '差';

console.log(grade(100)); // 优秀console.log(grade(1000)); // undefinedconsole.log(grade(10)); // 差复制代码

在链式调用三元运算符中,我们把条件运算符链接到每个级别的三元运算符中的第三个操作数里,但是对于初级程序员来说,这样的做法不仅不能提高代码的可读性反而会适得其反。所以当我们遇见更加复杂的选择代码时我们还是建议使用更加繁琐的if/else if/else来保存代码的可读性。

结论

在比较简单的选择结构时运用我们的三元运算符确实可以提升我们的代码的可读性以及简洁性,编写代码时也更快,但是如果是复杂的选择结构时运用链式三元运算符,不仅不会提高代码的可读性,反而会适得其反。所以合理的选择使用三元运算符很重要

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

职场人必备的6款实用办公app,每一款都是心头爱

打工人不容易啊,不提高工作效率怕是要被淘汰了。今天给大家分享6款职场人必备的实用办公APP,免费效率神器让工作事半功倍。这些APP每一款都是我的心头爱,肯定会让人大开眼界的,超级实用,直接往下看吧。1、向日葵远程控…

docker前端开发环境搭建

docker 做本地开发环境的好处: 隔离环境 各项目所需node等版本不一,切换起来比较麻烦,虽用 nvm可 来解决,但使用 docker 更优 快速配置环境 新电脑,新系统,新环境,第一件事就是配置开发环境。下…

[Java代码审计]—MCMS

环境搭建 MCMS 5.2.4:https://gitee.com/mingSoft/MCMS/tree/5.2.4/利用 idea 打开项目 创建数据库 mcms,导入 doc/mcms-5.2.8.sql 修改 src/main/resources/application-dev.yml 中关于数据库设置参数 启动项目登录后台 http://localhost:8080/ms/l…

【NLP】自动化计算文本文件TTR的bash脚本

自动化计算文本文件TTR的bash脚本 简介 这是一个可以计算文本文件TTR的bash脚本,文件名为:calculate_TTR.sh。它会接收一个文件名作为参数,并输出总单词数、特异单词数和TTR。 TTR是什么 TTR(Type-Token Ratio)是用…

javaweb期末复习重点

2022.12.12javaweb复习重点 10个选择题10个填空题10个判断2-3简答题2个程序题(15分一个) 1.HTML、Javascript、divcss ? 详细解释 HTML HTML(Hyper Text Mark-up Language)即超文本标记语言,是用于描述网页的一种标记语言。简单来说&…

九龙证券|全面推进技术研发,6G概念爆火!多家上市公司表示已布局

据商场研讨组织估计,2040年全球6G商场规划逾越3400亿美元。 6G概念指数逆市大涨5.61% 3月2日,6G概念指数逆市上涨5.61%。成份股中,本川智能、沃特股份、邦本科技、我国卫通涨停;信科移动-U大涨14.61%,亚光科技、信维通…

html常用标签2和语法练习

目录 1.表单标签 form标签 input标签 选择框 复选框:checkbox 按钮框:button 文件选择框 多行编辑框:textarea 2.html语法练习 展示简历信息 填写简历信息 ​编辑 3.HTML特殊字符 1.表单标签 表单是让用户输入信息的重要途径 表单域:包含表单元素的区域,重点是form…

手把手教你用js实现手机通讯录功能(附源码)

js实现手机通讯录效果图需求需求一:锚点通过#id配合a标签使用css中scroll-behavior属性的使用需求二需求三获取汉字拼音的首字母方法1:使用插件,这里推荐pinyin-pro方法2:使用unicode去重数组中冗余的对象法一:用Map去…

abap MODIFY常用语法解析

MODIFY 是既可以操作数据又可以操作内表的一个语法, 实现的逻辑都一样. 如果你内表或数据库中存在该行数据会对该行数据进行更新. 如果不存在,就会插入数据. , 1.如果it_tab是带有标题行的内表,是可以忽略FROM wa_tab工作区的 MODIFY it_tab .2.把工作区wa_tab中的数据更新…

中高级前端面试宝典之浏览器篇

中高级前端面试宝典 作为一名前端开发工程师,要掌握的知识点是多而杂的,在面试刷题阶段,经常没头没脑的,我将面试题系统化,分了好几个系列,祝愿大家(包括我)在这个疫情刚过去的互联网…

高通平台开发系列讲解(摄像头篇)QCM6490 上摄像头驱动开发

文章目录 一、Camera 硬件简介二、内核驱动移植2.1、确定设备树2.2、增加 camera 节点2.3、配置相关 GPIO沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 qcm6490 摄像头驱动开发。 一、Camera 硬件简介 摄像头连接器一般会包含 Mipi 信号、mclk、供电、re…

从业者必读,一篇文章轻松掌握DevOps核心概念和最佳技能实践!

文章目录前言一. DevOps的定义及由来二. DevOps的价值三. devops工具有哪些3.1 devops工程师的硬实力3.2 devops工程师的软实力总结前言 大家好,又见面了,我是沐风晓月,本文是对DevOps的总结,一篇文章告诉你什么是DevOps. 对很多…

Windows+CLion+Opencv+NCNN笔记

一、下载protobuf和ncnn在腾讯优图的github上下载ncnn,下载链接为https://github.com/Tencent/ncnn。在安装NCNN之前需要编译安装protobuf,protobuf3.4.0下载链接为https://github.com/google/protobuf/archive/v3.4.0.zip。下载后解压,将ncn…

什么是决策能力?HR人才测评

什么是决策能力?决策能力是一项多种能力的综合,指的是能够认识、理解、并且综合分析后得出判断,从而采取行动的能力。如:对当前形势的分析,对相关人员的判断,能做出合理的,适当的行动来应对。决…

【MyBatis】篇一.

文章目录1、MyBatis概述2、环境搭建1、MyBatis概述 认识: JavaEE开发的一个套件SSM,即: MyBatis是一个持久层的框架,是对JDBC的一个封装,是一个半自动的ORM框架。 ORM即实体类对象和数据库中的数据的一个映射关系&am…

关于Facebook Messenger CRM,这里有你想要知道的一切

关于Facebook Messenger CRM,这里有你想要知道的一切!想把Facebook Messenger与你的CRM整合起来吗?这篇博文是为你准备的! 我们将介绍有关获得Facebook Messenger CRM整合的一切信息。然后,我们将解释为什么你需要像SaleSmartly&a…

Git使用:常用命令汇总

前言 Git对于程序猿来说并不陌生,它是一款非常好用的项目管理工具,无论是前端开发还是后台开发,只要项目里面可以使用Git来管理,就会涉及代码的提交和合并操作,主要是常用的Git操作命令的使用,虽然目前有好…

CA-SSL:用于检测和分割未知类的半监督学习

论文作者 | Lu Qi, Jason Kuen , Zhe Lin, and etal论文来源 | CVPR2022文章解读 | William1、摘要为了提高检测/分割的性能,现有的自监督和半监督方法从未标记的数据中提取任务相关或任务特定的训练标签,但这两种方法对于任务性能都是次优的&#xff0c…

【JeecgBoot-Vue3】第1节 源码下载和环境安装与启动

目录 一. 资料 1. 源码下载 2. 官网启动文档 二、 前端开发环境安装 2.1 开发工具 2.2 前后端代码下载 2.3 前端启动 Step 1:安装nodejs npm Step 2:配置国内镜像(这里选阿里) Step 3:安装yarn Step 4&…

python的 ping 网络状态监测方法(含多IP)

ping 基本概念 ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Messag…