当前位置: 首页 > news >正文

【Java 进阶篇】JavaScript三元运算符详解

在这里插入图片描述

JavaScript是一门广泛用于前端和后端开发的编程语言,具备强大的表达式和运算符。本篇博客将重点介绍JavaScript中的三元运算符,解释其语法、用法和示例。如果您是JavaScript初学者,或者希望更深入了解这门语言的运算符,那么这篇博客将为您提供有关三元运算符的全面指南。

什么是三元运算符?

在JavaScript中,三元运算符是一种条件运算符,也称为条件表达式。这种运算符允许您基于某个条件的结果来选择两个不同的值之一。通常,它的语法如下:

condition ? expressionIfTrue : expressionIfFalse
  • condition:一个可以求值为truefalse的表达式。
  • expressionIfTrue:如果conditiontrue,则返回的值。
  • expressionIfFalse:如果conditionfalse,则返回的值。

三元运算符的主要作用是在一行代码中根据条件返回不同的值。它比使用if语句更紧凑,通常用于设置变量或返回值。

三元运算符的基本用法

下面我们来看一些三元运算符的基本用法示例,以便更好地理解它的功能。

1. 简单的三元运算符示例

let age = 25;
let message = (age >= 18) ? "成年人" : "未成年人";
console.log(message); // 输出:"成年人"

在这个例子中,如果age大于或等于18,三元运算符返回"成年人",否则返回"未成年人"。

2. 三元运算符用于变量赋值

三元运算符通常用于将不同的值赋给一个变量,具体取决于条件的结果。

let isRaining = true;
let weather = isRaining ? "带伞" : "不带伞";
console.log(weather); // 输出:"带伞"

在这个示例中,如果isRainingtrue,则weather变量被赋值为"带伞";如果isRainingfalse,则weather变量被赋值为"不带伞"。

3. 嵌套三元运算符

三元运算符可以嵌套在其他三元运算符内,但要小心使用,以确保代码的可读性。

let x = 10;
let y = 5;
let result = x > y ? "x 大于 y" : x < y ? "x 小于 y" : "x 等于 y";
console.log(result); // 输出:"x 大于 y"

在这个示例中,我们首先比较xy,如果x大于y,则返回"x 大于 y";否则,我们继续比较xy,如果x小于y,则返回"x 小于 y";否则,返回"x 等于 y"。

三元运算符与if语句的比较

三元运算符提供了一种更紧凑的方式来处理条件性赋值,但在某些情况下,使用if语句更为合适。下面是一些比较三元运算符和if语句的情况:

1. 简单条件

如果只需要在两个可能的值之间进行选择,而不涉及复杂的条件或多个条件,三元运算符是一个不错的选择。

// 使用三元运算符
let age = 25;
let message = (age >= 18) ? "成年人" : "未成年人";// 使用if语句
let age = 25;
let message;
if (age >= 18) {message = "成年人";
} else {message = "未成年人";
}

2. 复杂条件

如果条件逻辑更复杂,需要多个条件的组合,或者需要执行多个语句块,那么使用if语句通常更有利于代码的可读性。

// 使用三元运算符
let isMorning = true;
let isWeekend = false;
let greeting = isMorning && !isWeekend ? "早上好" : "你好";// 使用if语句
let isMorning = true;
let isWeekend = false;
let greeting;
if (isMorning && !isWeekend) {greeting = "早上好";
} else {greeting = "你好";
}

3. 返回值

三元运算符通常用于返回一个值,而不是执行一些操作。如果需要执行多个操作或没有返回值,if语句是更好的选择。

// 使用三元运算符(返回值)
function getGreeting(hour) {return hour < 12 ? "早上好" : "你好";
}// 使用if语句(没有返回值)
function sayGreeting(hour) {if (hour < 12) {console.log("早上好");} else {console.log("你好");}
}

结语

三元运算符是JavaScript中的一种强大工具,可用于在两个可能的值之间进行条件选择。它的紧凑性和简洁性使其成为代码中的常见选择,尤其是在单行操作或变量赋值的情况下。然而,对于更复杂的条件逻辑和多个操作,使用if语句通常更容易理解和维护。通过灵活运用这两种方法,您可以更好地管理JavaScript代码中的条件性逻辑。

希望这篇博客能够帮助您理解JavaScript中的三元运算符,并在日常编码中更好地应用它。如果您有任何问题或需要进一步的帮助,欢迎提出。愿您在JavaScript编程的道路上取得成功!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

相关文章:

【Java 进阶篇】JavaScript三元运算符详解

JavaScript是一门广泛用于前端和后端开发的编程语言&#xff0c;具备强大的表达式和运算符。本篇博客将重点介绍JavaScript中的三元运算符&#xff0c;解释其语法、用法和示例。如果您是JavaScript初学者&#xff0c;或者希望更深入了解这门语言的运算符&#xff0c;那么这篇博…...

MySQL数据库技术笔记(4)

关系型数据库需要使用设计范式&#xff1a; 第一范式&#xff1a;遵从原子性&#xff0c;属性不可再分&#xff0c;数据库表的每一列都是不可分割的基本数据项&#xff0c;同一列中不能有多个值。 例如&#xff1a;需要创建一张地址表&#xff0c;存储地址信息。将地址信息划…...

批量图片转文字识别OCR身份证件信息提取软件

现在的OCR软件很多&#xff0c;有在线的也有本地的&#xff0c;单识别文字功能还行&#xff0c;不过能批量识别的好像不多&#xff0c;网上搜了几个都不怎么好用。尤其是识别身份证件之类的软件&#xff0c;并且还能提取出识别到的信息&#xff0c;比如姓名 名族地址等等更少。…...

Mac/Wins Matlab如何查看APPs源码

查看Apps方法一样&#xff0c;点击HOME-preferences-MATLAB-Apps查看你的Apps安装路径。 你的Apps文件就安装在该目录下&#xff0c;直接进入这个目录就可以看到你自己写的APPs文件&#xff0c;...

Web应用-Thinkphp框架-开发指南

Thinkphp框架 二级导航分类&#xff0c;模板继承&#xff0c;内置标签Public 修改MVC模块化 ——访问机制传参加载模版模版引入 分离Runtime 缓存文件管理员添加数据验证及验证场景 控制器 validate 在sql执行&#xff08;敏感操作&#xff09;之前验证数据模板 分页数据表连接…...

LeetCode【300】最长递增子序列

题目&#xff1a; 思路&#xff1a; 通常来说&#xff0c;子序列不要求连续&#xff0c;而子数组或子字符串必须连续&#xff1b;对于子序列问题&#xff0c;第一种动态规划方法是&#xff0c;定义 dp 数组&#xff0c;其中 dp[i] 表示以 i 结尾的子序列的性质。在处理好每个…...

JRebel在IDEA中实现热部署 (JRebel实用版)

JRebel简介&#xff1a; JRebel是与应用程序服务器集成的JVM Java代理&#xff0c;可使用现有的类加载器重新加载类。只有更改的类会重新编译并立即重新加载到正在运行的应用程序中&#xff0c;JRebel特别不依赖任何IDE或开发工具&#xff08;除编译器外&#xff09;。但是&…...

uniapp微信小程序之分包异步化之组件分包

一、组件分包异步化解决的问题 日渐增加的通用组件造成的主包空间不足; 提升小程序访问速度,降低白屏率; 二、开启组件分包异步化过程中遇到的问题 如何进行占位组件配置; 如何解决通过$refs访问异步组件报错; 如何判断所有异步组件都已加载完毕; 多分包组件之间互相调用…...

Nacos(替代Eureka)注册中心

Nacos初步学习 Nacos 是一个开源的服务注册和配置中心&#xff0c;它允许您注册、注销和发现服务实例&#xff0c;并提供了配置管理的功能。下面是Nacos的最基础用法&#xff1a; 1. 服务注册和发现&#xff1a; 首先&#xff0c;您需要将您的应用程序或服务注册到Nacos中。…...

FHRP首跳冗余的解析

首跳冗余的解析 个人简介 HSRP hot standby router protocol 热备份路由协议 思科设备上 HSRP VRRP 华为设备上 VRRP HSRP v1 version 1 HSRP v2 version 2 虚拟一个HSRP虚拟IP地址 192.168.1.1 开启HSRP的抢占功能 通过其他参数 人为调整谁是主 谁是从 &a…...

垂直分表为什么能够加快查询效率?

前言 垂直分表是分库分表中分表操作上一个重要的实现方式&#xff0c;利用垂直分表可以提高数据的处理效率和查询速度&#xff0c;本节主要围绕 垂直分表为什么能够加快查询速度 展开说明&#xff0c;以mysql查询的底层流程为例。 垂直分表是将一张表按列分为多张表&#xff0c…...

Linux网络基础知识全面总结

文章目录 linux网络基础知识1.1 IP地址和子网掩码1.2 网关和路由1.3 域名系统 (DNS)1.4 端口和协议 Linux网络配置2.1 ifconfig命令2.2 网络接口配置文件2.3 DHCP自动获取IP地址2.4 静态IP地址配置2.5 网络重启和应用配置3. 网络工具和命令3.1 ping命令3.2 traceroute和mtr命令…...

【arm实验2】按键中断事件控制实验

设置按键中断&#xff0c;按键1按下&#xff0c;LED亮&#xff0c;再次按下&#xff0c;灭 按键2按下&#xff0c;蜂鸣器叫&#xff0c;再次按下&#xff0c;停 按键3按下&#xff0c;风扇转&#xff0c;再次按下&#xff0c;停 主函数&#xff1a; linuxlinux:~/study/08-c$…...

【数据结构-栈 二】【单调栈】每日温度、接雨水

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【单调栈的应用】&#xff0c;使用【栈】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&am…...

基于Keil a51汇编 —— 控制语句

ALIGN ALIGN expression ALIGN 语句将位置计数器设置为下一个地址模 2^表达式。 这可用于确保下一条语句在 2^n 边界上对齐。例如&#xff0c;对齐缓存行中的代码或数据。如有必要&#xff0c;汇编程序会创建一个间隙。间隔字节的内容因各个部分而异&#xff1a; 在data中未定…...

单目标优化算法:火鹰优化算法(Fire Hawk Optimizer,FHO)求解23个函数--提供MATLAB代码

一、火鹰优化算法FHO 火鹰优化算法&#xff08;Fire Hawk Optimizer&#xff0c;FHO&#xff09;由Mahdi Azizi等人于2022年提出&#xff0c;该算法性能高效&#xff0c;思路新颖。 单目标优化&#xff1a;火鹰优化算法&#xff08;Fire Hawk Optimizer&#xff0c;FHO&#…...

数据集笔记:分析OpenCellID 不同radio/ create_time update_time可视化

1 读取数据 &#xff08;以新加坡的cellID为例&#xff09; import geopandas as gpd import pandas as pdopencellidpd.read_csv(OpenCellID_SG.csv,headerNone,names[radio,mcc,net,area,cell,unit,lon,lat,range,samples,changeable1,created1,updated,AveSignal]) opence…...

【特纳斯电子】血氧饱和度监测仪设计-实物设计

视频及资料链接&#xff1a;血氧饱和度监测仪设计-实物设计 - 电子校园网 编号&#xff1a; T5662203M-SW 设计简介&#xff1a; 本设计是基于STM32的血氧饱和度监测仪系统&#xff0c;主要实现以下功能&#xff1a; 1. STM32单片机作为微处理器 2. MAX30102进行心率血氧检…...

雪花算法生成ID传到前端之后精度丢失问题

第一种&#xff1a;使用注解解决 使用方便简单&#xff0c;粒度高&#xff0c;适用于部分字段需要单独转换的场景&#xff0c;灵活度高 // 两种注解&#xff0c;选其一即可 // JsonFormat(shape JsonFormat.Shape.STRING) JsonSerialize(using ToStringSerializer.class) pri…...

Windows 10 - 适用于各种服务(Redis、MySQL)的文件迁移到其他目录后,导致的各种服务找不到的问题 - 注册服务 - 关闭服务 - 重启服务

目录 一、MySQL 服务找不到问题二、Redis 服务找不到问题Tips 三、PostgreSQL 服务找不到问题参考链接 必须要用管理员打开 doc 窗口&#xff0c;然后才进行以下操作。 通用命令 先关闭 xxx 服务 sc query xxx服务名&#xff0c;如 redis 服务 sc query redis sc query 删除…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...

npm安装electron下载太慢,导致报错

npm安装electron下载太慢&#xff0c;导致报错 背景 想学习electron框架做个桌面应用&#xff0c;卡在了安装依赖&#xff08;无语了&#xff09;。。。一开始以为node版本或者npm版本太低问题&#xff0c;调整版本后还是报错。偶尔执行install命令后&#xff0c;可以开始下载…...