javascript - 当 "!value ? null : value[0]"不等同于 "value ? value[0] : null"时,Javascript 中是否存在任何时间?

标签 javascript

有没有什么时候

var result = !value ? null : value[0];

不会等同于

var result = value ? value[0] : null;

最佳答案

在此处将语言规范中的形式主义添加到 Pointy 的回答中。

当您通过 the conditional (? :) operator 运行代码时发生的第一件事是 ToBoolean 在左侧被调用。

当您执行 !value 时,在左侧调用 ToBoolean,然后在左侧调用 ToBoolean。规范对这句话很清楚:

If ToBoolean(GetValue(lref)) is true, then

Let trueRef be the result of evaluating the first AssignmentExpression.

Else

Let falseRef be the result of evaluating the second AssignmentExpression.

因此,假设 JavaScript 引擎不包含错误,则在 JavaScript 中不会出现不同的结果。

关于javascript - 当 "!value ? null : value[0]"不等同于 "value ? value[0] : null"时,Javascript 中是否存在任何时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27787531/

相关文章:

javascript - Selenium 测试 - 确定/取消弹出窗口立即消失

javascript - 如何创建具有宽度和厚度的 Three.js 3D 线系列?

javascript - 表上 jquery 的总值(value)

javascript - 获取请求在 Angular 5 应用程序中抛出 404 错误

javascript - Rangy:如何根据父节点扩展选择?

javascript - 如何将拖放事件监听器附加到 React 组件

javascript - JS创建带有点击事件未接来电参数的按钮

javascript - 在初始化路由之前发送 $http 请求?

javascript - Mounted() 之后 vue 函数不运行

javascript - 将 javascript 函数添加到父级