来自三元运算符的赋值忽略剩余的表达式

时间:2016-12-03 06:48:38

标签: javascript ternary

这样做

const bool = true;
const a = 2 + true ? 3 : 0;
const b = 2 + false ? 3 : 0;

给了我a = 3b = 0。为什么忽略2 +

2 个答案:

答案 0 :(得分:1)

尝试这样写:

//如果所需的输出是a = 5且b = 2

const a = 2 + (true ? 3 : 0);
const b = 2 + (false ? 3 : 0;);

答案 1 :(得分:0)

  

为什么忽略2 +?

不是。给出:

2 + true ? 3 : 0;

首先评估2 + true。由于 2 是一个数字,+被视为加法, true 被强制为数字1,结果为3.

然后?导致3被强制为布尔 true ,因此3:0返回3。

在第二个表达式中:

  • false 评估为0
  • 2 + 0评估为2
  • 2?计算结果为true,返回3。

假设:

const b = 2 + false ? 3 : 0;

b 被赋值为3。