使用int值的条件运算符

时间:2018-03-02 08:11:01

标签: javascript conditional-operator

我发现了一个让我头晕目眩的声明。

假设x> = 0

(x - 1 ? 16:11)

显然此代码与

具有相同的响应
(x > 1 ? 16:11)

有人可以解释减号的工作原理吗?我认为条件运算符必须提供真或假的结果。我不明白整数如何适应条件运算符。

4 个答案:

答案 0 :(得分:4)

在代码中:

(x - 1 ? 16 : 11)

如果x等于1x - 100为假,则表达式的计算结果为11。否则,x - 1是真实的,表达式的结果为16

答案 1 :(得分:2)

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

假设x = 2结果为:

2 - 1 = 1 2 > 1 = true

假设x = 1结果为:

1 - 1 = 0 1 > 1 = false

0将被视为false1true

因此两个表达式都会有相同的结果。

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

-3 - 1 = -4 => true

-3 > 1 = false

答案 2 :(得分:2)

您可以使用一些值来了解正在发生的事情。

 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

答案 3 :(得分:1)

大于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");