所以我正在浏览器控制台中编写
4 < 5
true
4 < 5 < 10
true
7 < 4 < 10
true
前两个语句看起来不错,为什么最后一个语句也正确?我会认为(如在数学中)该表达式将是“与”运算的?任何人都可以将我指向MDN或讨论该规则和规则的类似资源吗?
答案 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
。然后将true
与10
进行比较。 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。