javascript 中是否可以使用多个比较运算符?

Are multiple comparison operators possible in javascript?

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

4 < 5

正确

4 < 5 < 10

正确

7 < 4 < 10

正确

前两个说法没问题,为什么最后一个说法也正确?我会认为(如在数学中)表达式将是“AND”?任何人都可以向我指出 MDN 或讨论此内容和规则的类似资源吗?

Javascript 的作用是首先计算左侧:

4 < 5 => true

然后继续休息:

true < 10 => true

因为左边的true强制变成了 (1),以及 1 < 10 === true。 (false 在与数字的比较中被强制转换为 0)。

检查这些看起来很有趣的东西"goofs":

console.log(3 < 2 < 1)

console.log(1 < 1 < 1)

4 < 5 的计算结果为 true。然后将 true10 进行比较。 Javascript 将 true 转换为 1 并且由于 1 小于 10 结果为 true.

使用此逻辑,如果您尝试 4 < 5 < 3,同样的逻辑也会 return 正确,而 4 < 5 < 1 将 return 错误。

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

因为false(0)小于10 而 true (1) 也小于 10.

除了使用多个比较运算符编写持续检查的无效方法之外,当下一次比较发生在上一次比较的结果时,您可以为比较运算符获取一个数组和一个函数,并且迭代每对要检查的项目。然后return结果。

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