为什么在JavaScript中“?”是真的?

在 JavaScript 中,我们经常会看到 ? 这个符号的使用,尤其是在一些流行的库或框架中(例如 Vue.js)。那么这个符号究竟代表什么意思呢?它为什么会被称为“真的”呢?

三目运算符

其实,? 符号在 JavaScript 中是一个很常见的三目运算符的组成部分。三目运算符是一种可以替代 if else 条件语句的简洁写法,通常由三个部分组成:

--------- - ---------- - -----------

其中,condition 是一个布尔类型的值,如果它为真,则返回 exprIfTrue 的结果,否则返回 exprIfFalse 的结果。

下面是一个简单的例子,通过三目运算符来判断一个数字是否为偶数:

----- --- - ---
----- ------ - --- - - --- - - ---- - -----
-------------------- -- -----

真的与假的

回到问题本身,为什么 ? 符号在 JavaScript 中被称为“真的”呢?这是因为,在 JavaScript 中有一种称为“假值”的概念。在条件判断中,除了 falseundefinednull0NaN''(空字符串)之外的所有值都被视为“真值”。

因此,当 condition 的值为一个非假值时,三目运算符就会返回 exprIfTrue 的结果,这种情况下,? 符号就被称为“真的”。

再看一个例子:

----- ---- - ----------
----- ------ - ---- - ------------- - --------
--------------------

如果 name 的值为一个非空字符串,则输出:欢迎你,ChatGPT;否则输出:请先登录!

深入理解

对于 JavaScript 初学者来说,三目运算符可能并不容易理解,因为它没有像传统的 if else 语句那样直观。而实际上,它们是等价的,只是写法有所不同。

来看一下下面这段代码:

-- ----------- -
  -----------
- ---- -
  ------------
-

在使用三目运算符时,相当于将上述代码简化为了一行:

--------- - ---------- - -----------

这种写法不仅更加简洁,而且在某些情况下可以提高代码的可读性和执行效率。

总结

在 JavaScript 中,“?”符号通常作为三目运算符的组成部分出现。在条件判断中,除了六个“假值”外,其他所有值都被视为“真值”。三目运算符的写法虽然有些不同于传统的 if else 语句,但它们是等价的。在实际应用中,可以根据具体情况选择使用哪种方式来编写代码。

希望本文能够对初学者理解 JavaScript 中的三目运算符有所帮助,也希望大家能够掌握这个简洁而强大的工具,让你的代码更加优雅和高效!

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/14177


猜你喜欢

  • 我如何使用JavaScript滚动到一个元素?

    在前端开发中,常常需要将页面滚动到特定的元素位置,为了提高用户体验和页面交互效果。本文将通过JavaScript实现在页面中如何滚动到指定的元素。 scrollIntoView() scrollInt...

    7 年前
  • JavaScript的WebSockets UDP?

    WebSockets是一种常用于在Web浏览器和服务器之间进行双向通信的网络协议。它基于TCP,提供了高效的实时数据传输能力。但是,有些应用场景需要更快的传输速度和更低的延迟,这时候WebSocket...

    7 年前
  • Ember JS关系破裂后更新其他表

    在使用Ember.js进行Web开发时,我们经常需要处理数据的关联关系。但是,在某些情况下,这些关系可能会被破坏,从而导致相关数据不一致。本文将介绍如何在Ember.js中处理关系破裂的情况,并更新其...

    7 年前
  • 逗号在JavaScript表达式中做什么?

    在JavaScript中,逗号是一个常见的运算符。它可以用于一些有趣的方式,可能会出现在你的代码中。在本篇文章中,我们将深入探讨逗号在JavaScript表达式中的作用。

    7 年前
  • 如何将字符串转换为JavaScript中的长字符串?

    在前端开发中,有时候我们需要在代码中使用较长的文本,比如HTML模板、CSS样式或者JavaScript代码。这些文本通常被包含在字符串中,但是JavaScript对于单行字符串和多行字符串的处理方式...

    7 年前
  • 没有一个HTTP GET加载JSON

    在前端开发中,我们通常会使用HTTP请求来获取数据以供页面渲染。其中,最常见的就是通过HTTP GET方法来获取JSON数据。但是,如果没有一个HTTP GET来加载JSON该怎么办呢? 了解替代方案...

    7 年前
  • Safari开发工具:如何在导航时保存控制台日志?

    Safari是一款非常适合前端开发的浏览器,其内置的Web开发工具使得调试和优化网站变得更加轻松。其中最重要的一个功能就是控制台(console),它可以帮助我们快速找到代码中的错误以及进行性能分析。

    7 年前
  • 这堆栈溢出式减价(WMD),我应该使用 JavaScript 编辑器吗?

    什么是 WMD "这堆栈溢出式减价"(WMD) 是一种流行的逐字逐句编写技术,它可以让你通过添加类似于 Markdown 的语法来清晰地标记文本。WMD 最初是在 Stack Overflow 上开发...

    7 年前
  • 如何自动大小iframe?[重复]

    很抱歉,我不能提供重复的文章。 ...

    7 年前
  • 如何在 JavaScript 中循环一个数字?

    在 JavaScript 中,循环数字通常使用 for 循环实现。本文将介绍如何使用 for 循环以及其他一些方法来循环一个数字。 使用 for 循环 for 循环是一种常用的循环结构,它可以在一定范...

    7 年前
  • Moment.js:日期之间的日期

    在前端开发中,日期操作是一个常见的需求。Moment.js 是一个流行的 JavaScript 库,可用于处理和格式化日期和时间。它提供了丰富的 API,使日期处理变得轻松和直观。

    7 年前
  • 加载外部JS的书签吗?

    在前端开发中,我们经常需要引入外部的JavaScript文件来完成一些特定的功能。通常情况下,我们会将这些JS文件通过 <script> 标签嵌入到HTML中,但是有时候我们也可以使用书签...

    7 年前
  • 像 jQuery(布尔)这样的东西存在吗?

    在前端开发中,jQuery 是一款非常受欢迎的 JavaScript 库。它简化了 DOM 操作、事件处理、动画效果等任务,并提供了跨浏览器兼容性解决方案。但是,有些人可能会问:是否存在像 jQuer...

    7 年前
  • 为什么数组中的 `var` 项在 JavaScript 中被认为是不好的实践?

    在 JavaScript 中,使用 var 声明变量在一些情况下是有问题的。特别是在数组中,使用 var 声明变量可能会导致一些预料之外的行为。本文将深入探讨这个问题,并提供一些解决方案。

    7 年前
  • 您遇到过哪些跨浏览器问题?

    在前端开发中,跨浏览器问题是不可避免的。不同的浏览器对于相同的代码可能会有不同的解释和实现方式,导致页面显示效果不一致或者功能异常。本文将介绍几个常见的跨浏览器问题,并提供相应的学习和指导意义。

    7 年前
  • 前端碰撞检测

    在前端开发中,碰撞检测是一个非常重要的技术。它可以用于检测两个物体是否相撞,以及计算出它们碰撞时的信息,如碰撞点、碰撞面等等。本文将介绍碰撞检测的基础知识和实现方法,并提供示例代码供读者参考。

    7 年前
  • React.js:为 contenteditable onchange 事件

    在 Web 开发中,我们经常需要实现可编辑的内容。而 contenteditable 属性提供了一种简单易用的方式来实现这一需求。然而,使用 contenteditable 来开发富文本编辑器时,通常...

    7 年前
  • 如何调试谷歌浏览器后台脚本?[重复]

    很抱歉,我不能为您提供重复的答案。 ...

    7 年前
  • 如何停止 JavaScript 循环?

    在 JavaScript 开发中,循环是非常常见的操作,但有时候您可能需要在某个条件下终止循环。本文将介绍如何停止 JavaScript 循环,并提供详细的说明和示例代码。

    7 年前
  • 有一种萤火虫或JavaScript控制台调试机器人?

    在前端开发中,我们经常需要使用浏览器的控制台来进行调试。但是,对于一些复杂的错误,手动输入代码来排查问题会非常耗时且不方便。因此,本文将介绍一种利用萤火虫或JavaScript控制台调试机器人来提高前...

    7 年前

相关推荐

    暂无文章