2016-12-03 48 views
2

这样做分配忽略剩余表达

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

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

+0

'2 +假的? 3:0'评估为3,而不是0。 – RobG

+0

什么是期望的输出?以及bool变量的用法是什么? –

回答

1

尝试写这样的:

//如果所希望的输出是一个= 5和B = 2

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

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

 
console.log(a); 
 
console.log(b);

https://jsfiddle.net/74ds0der/

的代码你已经写出了a = 3,b = 3。退房jsfiddle链接。

0

为什么是2 +被忽略?

不是。鉴于:

2 + true ? 3 : 0; 

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

然后?原因3被强制为布尔真这样的3:03返回。

在第二个表达式:

  • 的计算结果为0
  • 2 + 0的计算结果为2
  • 2?评估为真,所以返回3。

考虑:

const b = 2 + false ? 3 : 0; 

b分配值3