使用 int 值的条件运算符

Conditional operator using a int value

我看到一个让我头脑混乱的陈述。

假设 x >= 0

(x - 1 ? 16:11)

显然此代码的响应与

相同
(x > 1 ? 16:11)

谁能解释一下负一是如何工作的?我认为条件运算符必须提供真或假的结果。我不明白整数如何适合条件运算符。

代码中:

(x - 1 ? 16 : 11)

如果 x 等于 1x - 10 并且 0 是假的,所以表达式的计算结果是 11。否则,x - 1 为真且表达式计算为 16.

条件运算符正在计算表达式的结果。

假设 x = 2 结果为:

2 - 1 = 1 2 > 1 = true

假设 x = 1 结果为:

1 - 1 = 0 1 > 1 = false

0 将被视为 false1 作为 true.

所以两个表达式的结果相同。

但请注意: 如果您使用负数,表达式将有不同的结果,因为负数将被条件运算符视为 true

-3 - 1 = -4 => true

-3 > 1 = false

大于0或小于0的值在条件语句中取为true,零取为false

(1)?"true": "false";
(0)?"true": "false";

console.log((-1)? "true": "false");
console.log((1)? "true": "false");
console.log((0)? "true": "false");

您可以使用一些值来了解发生了什么。

 x - 1 ? 16 : 11

-1 - 1              -2 truthy -> 16
 0 - 1              -1 truthy -> 16
 1 - 1               0 falsy  -> 11
 2 - 1               1 truthy -> 16
 3 - 1               2 truthy -> 16

基于此,条件可以改写为

 x !== 1 ? 16 : 11