使用 int 值的条件运算符
Conditional operator using a int value
我看到一个让我头脑混乱的陈述。
假设 x >= 0
(x - 1 ? 16:11)
显然此代码的响应与
相同
(x > 1 ? 16:11)
谁能解释一下负一是如何工作的?我认为条件运算符必须提供真或假的结果。我不明白整数如何适合条件运算符。
代码中:
(x - 1 ? 16 : 11)
如果 x
等于 1
,x - 1
是 0
并且 0
是假的,所以表达式的计算结果是 11
。否则,x - 1
为真且表达式计算为 16
.
条件运算符正在计算表达式的结果。
假设 x = 2
结果为:
2 - 1 = 1
2 > 1 = true
假设 x = 1
结果为:
1 - 1 = 0
1 > 1 = false
0
将被视为 false
。 1
作为 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
我看到一个让我头脑混乱的陈述。
假设 x >= 0
(x - 1 ? 16:11)
显然此代码的响应与
相同(x > 1 ? 16:11)
谁能解释一下负一是如何工作的?我认为条件运算符必须提供真或假的结果。我不明白整数如何适合条件运算符。
代码中:
(x - 1 ? 16 : 11)
如果 x
等于 1
,x - 1
是 0
并且 0
是假的,所以表达式的计算结果是 11
。否则,x - 1
为真且表达式计算为 16
.
条件运算符正在计算表达式的结果。
假设 x = 2
结果为:
2 - 1 = 1
2 > 1 = true
假设 x = 1
结果为:
1 - 1 = 0
1 > 1 = false
0
将被视为 false
。 1
作为 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