JS 中的三元运算符:您需要了解的一切

js 中的三元运算符:您需要了解的一切

什么是三元?

三元运算符是一个 javascript 运算符,自 2015 年 7 月起可跨浏览器使用。它是 if/else 语句的简写替代方案。该运算符广泛应用于 java、c、python 等不同的编程语言中,但本文的重点将放在 javascript 上。

让我们看看三元运算符的一般语法。

condition ? iftrue : iffalse

从上面的示例中可以看到,三元运算符相应地替换了 if 和 else 语句,用 ?和 : 符号。将检查问号左侧的条件。如果为 true,则第一个表达式位于 ? 之间并且 : 标记将被执行。如果为 false,则执行 : 符号后面的最后一个表达式。

它是如何运作的?

为了理解三元运算符的工作原理,我们将其与常规 if/else 语句进行比较。
下面的 javascript 代码将有条件地将字符串记录到控制台。

let a = 10if(a == 10){    console.log("variable is ten!")}else{    console.log("variable is not ten!")}

现在,让我们使用三元运算符重写此代码。

let a = 10a == 10 ? console.log("variable is ten!") : console.log("variable is not ten!")

此代码块中的三元运算符按照我们想要的方式有条件地记录字符串。但是这个语句还有更好的写法。
三元运算符不仅执行表达式,还返回值。因此,我们可以用一种处理同一个 console.log 语句中两个不同值的方式来编写该语句,而不是使用运算符来处理两个不同的 console.log 表达式。
例如:

let a = 10console.log(a == 10 ? "variable is ten!" : "variable is not ten!")

这行的输出将与我们之前编写的其他三元表达式完全相同。但这段代码更加紧凑,易于阅读。

我们可以使用三元运算符有条件地为变量赋值。让我们看一个包含常规 if/else 语句的示例,然后使用三元再次编写它。

let a = 10let bif(a === 10){    b = a * 5}else{    b = a * 2}

如果 a 是 10,则代码块会将其乘以 5,否则会将变量乘以 2,并且在这两种情况下,都会将其分配给 b。
使用三元运算符的替代方案如下所示:

let a = 10let b = a === 10 ? a * 5 : a * 2

如您所见,为这样的基本操作编写单行代码会更方便。

嵌套条件

有时我们必须在彼此内部使用多个 if/else 条件。三元运算符可用于链接条件。

let a = 5if(a === 1){    console.log("1")}else if(a === 2){    console.log("2")}else{    console.log("a is not 1 or 2")}

上面显示的条件链可以使用三元运算符表示,如下所示:

let a = 5console.log(a === 1 ? "1" : a === 2 ? "2" : "a is not 1 or 2")

正如你所预料的那样,这很容易变得非常混乱。这就是为什么不需要在复杂的条件语句中使用三元运算符。

react 中的三元

如果您之前构建过 react 应用程序,您可能知道条件渲染是一个重要的主题。三元运算符使这个操作变得更容易。让我们看一下 react 官方页面的示例。
这是编写声明的常规方式:

if (ispacked) {  return 
  • {name} ✅
  • ;}return
  • {name}
  • ;

    这是相同的语句,但使用三元运算符。

    return (  
  • {isPacked ? name + ' ✅' : name}
  • );

    正如你所看到的,它看起来好多了。因此,有时使用三元编写语句是更干净、更好的方法,尤其是在使用 react 时。但在某些情况下,三元运算符会使代码更难阅读。

    您认为在哪些其他情况下我们必须使用或避免三元运算符?请在评论中让我知道您的想法!

    感谢您的阅读。
    请查看这些链接以进一步阅读。

    有关三元运算符的更多信息:条件(三元)运算符 – mdn web 文档有关 react 中条件渲染的更多信息:条件渲染 – react

    以上就是JS 中的三元运算符:您需要了解的一切的详细内容,更多请关注创想鸟其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
    发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1498692.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2025年12月19日 20:40:51
    下一篇 2025年12月19日 20:41:05

    相关推荐

    • JavaScript井号函数名:为什么我的WebView报错而Chrome正常?

      JavaScript井号(#)命名浏览器兼容性问题 在使用npm的pdf-dist包时,遇到浏览器兼容性问题。在WebView中,以井号(#)开头的函数名会出现”Unexpected token”的语法错误,而Chrome浏览器中没有问题。 解决方法: Android Web…

      2025年12月19日
      000
    • 使人才与业务目标保持一致:数据驱动的方法

      介绍 在快速发展的技术环境中,企业必须聘用不仅满足最低可行要求(MVR)而且还能通过机会领域为未来增长做出贡献的人才。在 TeamStation AI,我们采用数据驱动的方法来进行人才调整。本文探讨了我们如何使用数学模型使人才与业务目标保持一致,重点关注投资回报率和长期战略成功。 了解人才调整 最低…

      2025年12月19日
      000
    • 为什么document.write无法重载defer脚本?

      为什么使用 document.write 无法重载 defer 脚本 在给定的代码段中,在页面加载后,document.write 无法重载 defer 脚本 2.js 和 3.js。 根源在于异步加载的 defer 脚本和 document.write 之间的交互。defer 脚本会在文档的 re…

      2025年12月19日
      000
    • Angular’s Biggest Misconception: “It’s Not Worth Learning Due to Fewer Jobs”

      在选择前端框架时,对 Angular 的一个常见误解是学习它不值得,因为“没有足够的工作机会”。让我们揭穿这个神话并探索 Angular 在就业市场中的现实地位。 为什么会存在这种误解? 这种信念源于将 Angular 职位发布数量与 React 进行比较。在许多地区,React 职位的数量通常超过…

      2025年12月19日
      000
    • 使用 populateDropdown 简化您的下拉菜单管理

      让我们开始吧!假设您正在构建一个动态 web 应用程序,常见任务之一是根据各种数据源填充下拉菜单。如果没有简化的方法,您会发现自己编写重复且容易出错的代码,这对于维护来说可能是一场噩梦。这时,一个简单而强大的函数(如 populatedropdown)可以发挥作用。它消除了麻烦,让您的生活变得更加轻…

      2025年12月19日
      000
    • Axios 与 Fetch:哪个最适合 HTTP 请求?

      在 javascript 中发出 http 请求的方法有很多,但最流行的两种是 axios 和本机 fetch() api。在这篇文章中,我们将比较和对比这两种方法,以确定哪一种更适合不同的场景。 http 请求的基本作用 http 请求是与 web 应用程序中的服务器和 api 进行通信的基础。 …

      2025年12月19日 好文分享
      000
    • 处理 Javascript/Typescript 中的错误:自定义异常和结果

      诸如调用 api 或验证用户输入的数据之类的操作在开发中非常常见,并且是可以给出正确结果或失败的函数的示例。一般来说,为了在 javascript(和其他语言)中控制它,我们通常使用并创建简单的异常。 它们似乎是控制我们正在开发的应用程序或程序可能出现的错误的最简单方法。然而,随着项目和团队的成长,…

      2025年12月19日
      000
    • 了解网页抓取中的 JavaScript 反混淆是什么

      JavaScript 反混淆是逆向混淆 JavaScript 代码以了解其功能并提取必要数据的过程。 JavaScript 通常在网站中用于动态生成或隐藏内容,这使得抓取工具更难直接从 HTML 收集数据。 混淆是一种通过修改变量名称、添加额外代码以及使用加密或编码方法来使 JavaScript 代…

      2025年12月19日
      000
    • 为什么document.write无法重载多个defer脚本而appendChild可以?

      document.write无法重载多个defer脚本的原因 在浏览器呈现网页的过程,文档流会经历以下状态: 语法分析:解析HTML和CSS。创建DOM树:构建文档对象的树形结构。运行脚本:执行 зустрі到的 JavaScript 脚本。渲染:使用DOM树和CSS样式,绘制页面。 defer 属…

      2025年12月19日
      000
    • Node.js项目中TypeScript文件执行失败:ts-node无法识别.ts文件的原因是什么?

      为什么在 nodejs 项目中不能在 typescript 项目 ts-node 执行.ts 文件? 在 typescript 项目中使用 ts-node 执行 .ts 文件时遇到无法识别.ts 文件后缀的错误,该问题可能是由于以下原因造成的: 1. package.json 中 “ty…

      2025年12月19日
      000
    • Callbacks vs Promises vs Async/Await: Detailed Comparison

      简介:异步编程是现代 javascript 开发的基石,使任务能够并发执行而不会阻塞主线程。随着时间的推移,javascript 已经发展出更优雅的解决方案来处理异步操作。在本文中,我们将探讨异步 javascript 的演变,从传统的回调开始,逐步发展到 promise 和 async/await…

      2025年12月19日
      000
    • Understand what JavaScript deobfuscation is in web scraping

      JavaScript 反混淆是逆向混淆 JavaScript 代码以了解其功能并提取必要数据的过程。 JavaScript 通常在网站中用于动态生成或隐藏内容,这使得抓取工具更难直接从 HTML 收集数据。 混淆是一种通过修改变量名称、添加额外代码以及使用加密或编码方法来使 JavaScript 代…

      2025年12月19日
      000
    • Choosing Your Tech Stack: A Developer&#s Journey

      当我第一次踏上编码之旅时,我对可用的编程语言和技术堆栈的数量感到不知所措。感觉就像走进一个广阔的图书馆,每本书都承诺一次不同的冒险,但我不知道从哪里开始。 最初的困惑 作为编码世界的新手,我对不同语言的潜力、各种技术堆栈以及与不同编码相关工作相关的职责知之甚少。我记得我盯着 JavaScript、P…

      2025年12月19日
      000
    • 什么是网络可访问性以及为什么它很重要? (内部指南)

      网络可访问性确保网站可供各种能力的人(包括残疾人)使用。本质上,它是关于创建一个包容性的网络,每个人,无论其身体或认知限制如何,都可以访问在线内容并与之互动。 网络可访问性的关键要素: 替代文本:为图像提供替代文本,以便屏幕阅读器可以向视障用户描述视觉效果。键盘导航:确保用户仅使用键盘即可导航网站,…

      2025年12月19日
      000
    • 从 useEffect 到 React Query:在 React 中实现数据管理现代化

      在现代 web 开发环境中,构建快速响应的应用程序来有效管理服务器端数据比以往任何时候都更加重要。在 react 中获取数据的传统方法,尤其是使用 useeffect,通常会导致复杂的状态管理、重复的代码和性能问题。借助 react query,开发人员可以利用自动缓存、后台获取和内置突变支持等功能…

      2025年12月19日
      000
    • VSCode内置了哪些编程语言插件?

      vscode 内置语言插件一览 VSCode 已内置多款语言插件,免除安装市场插件的步骤。以下是如何查看内建语言插件: 快捷键 Ctrl+Shift+P 唤出命令窗口输入并选择 “Show Built-in Extensions”左侧出现的 “Programmin…

      2025年12月19日
      000
    • VSCode内置了哪些语言插件?如何查看它们?

      VSCode 的内置语言插件大盘点 VSCode 以其扩展性着称,可以通过安装各种插件来增强其功能。然而,大家可能不知道,VSCode 已自带了一些内置语言插件,无需额外下载。 如何查看内置插件? 要查看内置语言插件列表,请执行以下步骤: 1.按住 Ctrl+Shift+P 唤出命令窗口。 2.输入…

      2025年12月19日
      000
    • 使用pnpm代替npx创建React项目,可行吗?

      将 npx 安装更改为 pnpm 安装 在使用 npx 创建 react 应用程序时,需要使用如下命令: npx create-react-app react-demo –template typescript npx 是使用 npm 进行安装的,那么是否可以将其修改为使用 pnpm 呢? 答案:…

      2025年12月19日
      000
    • Python闭包:为什么第一种情况不输出内容,第二种情况却可以?

      python 闭包为何会影响输出? 在 python 中,闭包是指在内嵌函数中引用外部作用域变量的行为。但即使在涉及闭包的情况下,理解输出行为也很重要。 问题: 以下代码中,为何第一种情况下无法输出内容,而第二种可以: 立即学习“Python免费学习笔记(深入)”; # 第一种def startga…

      2025年12月19日
      000
    • 为什么 eval() 可能是 JavaScript 代码最大的敌人

      介绍 javascript 的 eval() 函数允许开发人员动态评估或执行一串 javascript 代码。虽然在某些情况下看起来很方便,但使用 eval() 可能会导致严重的问题,包括安全漏洞、性能下降以及可能导致应用程序崩溃的不可预测的行为。本文将探讨为什么 eval() 通常被认为是不好的做…

      2025年12月19日
      000

    发表回复

    登录后才能评论
    关注微信