JavaScript 中如何计算三元运算符?

2024-04-21

关于三元(? :JavaScript 中的 ) 运算符,我想知道典型浏览器的 JavaScript 解释器如何评估它:

替代方案A:

  1. 计算第一个操作数。
  2. 如果第一个操作数的结果为 true,则计算并返回第二个操作数。
  3. 否则,计算并返回第三个操作数。

替代方案B:

  1. 所有三个操作数均被评估。
  2. 如果第一个操作数的结果为 true,则返回第二个操作数的结果。
  3. 否则,返回第三个操作数的结果。

替代方案C:

当然,如果选项 A 和选项 B 都没有准确描述三元运算符的工作原理,请解释一下它是如何工作的。


根据规格 http://ecma262-5.com/ELS5_HTML.htm#Section_11.12它的工作原理就像在替代方案A:

生产ConditionalExpression : LogicalORExpression ? AssignmentExpression : AssignmentExpression评价如下:

  1. Let lref是评估的结果LogicalORExpression.
  2. If ToBoolean(GetValue(lref)) is true, then
    • Let trueRef是评估第一个的结果AssignmentExpression.
    • Return GetValue(trueRef).
  3. Else
    • Let falseRef是评估第二个的结果AssignmentExpression.
    • Return GetValue(falseRef).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中如何计算三元运算符? 的相关文章

  • 我如何在 AngularJS 中监听点击并按住的情况?

    我制作了一个时间计数器 您可以通过单击按钮来增加或减少时间 然而 我希望当我单击并按住按钮时 时间的价值会不断攀升 所以目前如果你看到我的Plunkr http plnkr co edit BxX9x5zYFMXVqt5JsN1F p pr
  • chrome 调试器承诺在暂停时不会解析?

    也许我没有正确调试承诺 但基本上 如果您在断点处停止并运行异步代码 它实际上不会完成 直到您恢复执行为止 这是一个问题 调试器允许您快速试验多个 api 方法 但如果您恢复它 您就不能 debugger now type the follo
  • Oo 任何 IDE 中的 javascript 代码补全

    你知道有什么IDE可以自动完成这种代码吗 我这里有一个 javascript 类生成器 function var core bind function method scope if method instanceof Function t
  • 仅当表单已提交时才触发 jQuery 表单验证?

    不引人注目的验证基于这样的想法 don t进行表单验证 直到用户提交表单 一旦发生这种情况 如果表单上的某些内容无效 那么一旦用户更改了每个字段 就会立即验证它 我想做的是 不显眼地 触发表单元素的验证 也就是说 only如果用户已尝试提交
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 即使我可以监视其他方法,也无法监视事件处理程序

    我想使用 Jest Jasmine Enzyme 测试 React 中的事件处理程序 MyComponent js import React from react class MyComponent extends React Compon
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件

随机推荐

  • 如何使用 PKCS11Interop 管理网络故障并避免错误

    在 Safenet HSM 上使用 PKCS11Interop 时 出现此错误 方法 C OpenSession 返回 2147484548 在我的文档中 错误是 CKR SMS ERROR 安全消息系统的一般错误 可能由 HSM 故障或网
  • 如何在 php5/ubuntu 中安装 pspell?

    我正在尝试在 Ubuntu 中安装适用于 PHP 5 的 pspell 我已经安装了运行 pspell 所需的 aspell 库 如图所示here http www php net manual en pspell requirements
  • 如何在.NET中针对不同环境使用不同的.settings文件?

    NET 允许您使用 settings 文件来管理应用程序设置 我想单独存储生产 开发和测试设置 我可以这样做 EnvironmentSettings environmentSettings get the current environme
  • 如何在触摸事件上移动画布中的 ShapeDrawable

    我正在尝试在 Android 中实现绘图应用程序 用户应该能够选择和移动绘制的形状 目前我已经在绘图画布上静态绘制了一些矩形和文本 View mDrawingCanvas new View mContext ShapeDrawable re
  • 如何使用 Seaborn 修改 Violinplot 的边缘颜色

    我正在尝试更改 Seaborn 中小提琴的边缘颜色 下面的代码对我有用 ax sns violinplot data df x y SleepAmount hue Thr palette my pal split True linewidt
  • 用空元素拆分 Java 中的字符串

    我正在逐行读取 csv 文件 一行可以如下所示 String str 10 1 现在我想根据 来分割 String splitted str split 现在的问题是 这只会产生 2 个元素 但我想要 5 个元素 前两个元素应包含 10 和
  • 如何以编程方式更改 Windows 7 Aero/窗口边框颜色?

    我正在考虑制作一个程序 根据电池电量改变 Windows 7 的航空颜色 我对 C 相当陌生 我想知道如何以编程方式更改 Windows 7 Aero 我有这个代码 DllImport dwmapi dll EntryPoint 127 P
  • IllegalArgumentException:找不到片段 id 的视图

    正在抛出此异常 引起原因 java lang IllegalArgumentException 找不到片段 MainActivityFragment 37dff01 1 id 0x7f0e006b FFTAG 的 id 0x7f0e006b
  • 将nodejs应用程序部署到谷歌云平台[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我注册了谷歌云平台的免费试用 但我被卡住了 我的应用程序是一个使用express的节点服务器 它需要连接
  • 根据 $_POST 值填充字段

    我正在寻求有关我试图填写的表格的帮助 我通常会使用 onChange 函数 但我认为这不是一个选择 基本上我有一个
  • Spring Boot 外部 jar 未加载

    我有一个带有 spring boot 的 java 项目 我需要从外部文件夹加载 application properties 和依赖项 jar 我通过在类路径中使用 application properties 进行测试 并且 loade
  • 如何使用 Quartz2D 绘制可动画的标尺?

    我想用 Quartz2D 画一把简单的尺子的线条 仅供练习 由于我不知道如何在 iPhone 上以编程方式制作矢量图形 也许有人可以给我指点一个好的入门教程 正如普拉门指出的那样 石英 2D 文档 https developer apple
  • 由于级联触发器更新该行,该行未被删除

    我在删除表中的行时遇到问题 该表具有调用第二个表的触发器的触发器 该触发器更新第一个表中的行 这是描述 Table A id b table count Table B id a table id fk 表 A 有一个 BEFORE DEL
  • 我想在 Firebird 上获得 unix 时间

    我想在 firebird 中获取时间 类似于 Javascript 上的 GetTime 我已经创建了一个 但每天的时差增量并不那么准确 CREATE PROCEDURE GETTIMEINMILLISECONDS RETURNS MILL
  • Tomcat 集群环境中的 JDBC 连接池

    我对此相对很陌生 但我设置了一个 Tomcat 集群 使用mod proxy来自httpd 和会话复制 单独的redis服务器 以实现容错 我对这个设置有几个问题 我的应用程序 spring hibernate 每个用户都有不同的数据库 所
  • 在构造函数中增加唯一的 ID 号

    我正在 C 中处理一个对象 我需要该对象的每个实例都有一个唯一的 id 我的解决方案只是在类中放置一个名为 idCount 的成员变量 并在构造函数中放置 objectID idCount idCount 我认为这可以解决我的问题 但似乎
  • AtomicReference.compareAndSet() 使用什么来确定?

    假设你有以下课程 public class AccessStatistics private final int noPages noErrors public AccessStatistics int noPages int noErro
  • 如何使用poi jar读取java api中的docx文件内容

    我已经阅读完 doc 文件 现在我正在尝试阅读 docx 文件内容 当我搜索示例代码时 我发现很多 但没有任何效果 检查代码以供参考 import java io import org apache poi xwpf usermodel X
  • 构建scala项目时Intellij 12和内部编译错误

    我刚刚下载了 Intellij 12 01 build IC 123 94 当我尝试构建 Scala 项目时 我得到以下堆栈跟踪 Internal error java lang ClassNotFoundException org jet
  • JavaScript 中如何计算三元运算符?

    关于三元 JavaScript 中的 运算符 我想知道典型浏览器的 JavaScript 解释器如何评估它 替代方案A 计算第一个操作数 如果第一个操作数的结果为 true 则计算并返回第二个操作数 否则 计算并返回第三个操作数 替代方案B