JavaScript中可以使用多个比较运算符吗?

时间:2018-11-21 07:50:59

标签: javascript boolean-expression

所以我正在浏览器控制台中编写

4 < 5

true

4 < 5 < 10

true

7 < 4 < 10

true

前两个语句看起来不错,为什么最后一个语句也正确?我会认为(如在数学中)该表达式将是“与”运算的?任何人都可以将我指向MDN或讨论该规则和规则的类似资源吗?

4 个答案:

答案 0 :(得分:1)

JavaScript的作用是首先评估左侧:

4 < 5 => true

然后继续进行其余操作:

true < 10 => true

因为左侧的true 强制 设置为 number 1),并且{{ 1}}。 (与数字比较的1 < 10 === true被强制为false)。

检查这些看起来很滑稽的“蠢蛋”:

0

答案 1 :(得分:1)

除了使用不可行的方法编写带有多个copmparison运算符的连续检查之外,在进行下一次比较时,将使用上一个比较的结果,但是您可以为比较运算符使用数组和函数,并迭代每对要检查的项目。然后返回结果。

const compare = (values, fn) => values.slice(1).every((b, i) => fn(values[i], b));

console.log(compare([7, 4, 10], (a, b) => a < b)); // false
console.log(compare([4, 7, 10], (a, b) => a < b)); //  true
console.log(compare([2, 1, 0], (a, b) => a > b));  //  true

答案 2 :(得分:0)

4 < 5的值为true。然后将true10进行比较。 JavaScript将true转换为1,并且由于1小于10,结果为true

使用这种逻辑,如果您尝试4 < 5 < 3,它也将以相同的逻辑返回true,而4 < 5 < 1将返回false。

答案 3 :(得分:0)

console.log( false < 10) // true
console.log( true < 10) // true

因为错误(0)小于10 并且true(1)也小于10。