当我更改f7
值时,它将正确执行,直到第二个条件,但第三个和第四个条件不会触发。我能做什么?请帮我在第二种情况下停止?
var f7 = 5;
var g7 = (f7 <= 3 ? 100 : (2 <= f7 < 4 ? 75 : (4 <= f7 < 5 ? 60 : (5 <= f7 < 6 ? 40 : 15))));
console.log(g7);
问题在于执行比较的顺序。我喜欢在多行上格式化三元表达式,使其更容易使用,删除不必要的括号,除非它们有助于可读性。
例如
var g7 = f7 <= 3
? 100
: 2 <= f7 < 4
? 75
: 4 <= f7 < 5
? 60
: 5 <= f7 < 6
? 40
: 15
这使得第一次比较与第二次比较中测试的值重叠更加清楚。你真的想检查f7<=3,然后检查2<f7<4.
我本以为这会与严格递增的值范围一起使用,没有重叠。
谢谢@cid我的计算完成了2 <= f7 && f7 < 4
我用上面的代码做感谢
var g7 = f7 <= 3 ? 100
: 2 <= f7 && f7 < 4 ? 75
: 4 <= f7 && f7 < 5 ? 60
: 5 <= f7 && f7 < 6 ? 40
: 15;