我发现了一个让我头晕目眩的声明。
假设x> = 0
(x - 1 ? 16:11)
显然此代码与
具有相同的响应(x > 1 ? 16:11)
有人可以解释减号的工作原理吗?我认为条件运算符必须提供真或假的结果。我不明白整数如何适应条件运算符。
答案 0 :(得分:4)
在代码中:
(x - 1 ? 16 : 11)
如果x
等于1
,x - 1
为0
且0
为假,则表达式的计算结果为11
。否则,x - 1
是真实的,表达式的结果为16
。
答案 1 :(得分:2)
条件运算符正在评估表达式的结果。
假设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
答案 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");