【发布时间】:2018-05-16 20:54:11
【问题描述】:
我刚刚尝试了一些 JS 核心原则,发现引擎评估链式关系运算符而不会引发错误。相反,他们以我自己无法理解的方式进行评估。
console.log(1 < 2 < 3 < 4 < 5); //true, expected
console.log(5 > 4 > 3 > 2 > 1); //false, should be true
console.log(5 >= 4 >= 3); //false, should be true
console.log(7 >= -2 >= 1); //true, should be false
console.log(1 <= -2 <= 7); //true, should be false
这甚至是官方支持的吗?我在文献/文档中也没有提到这方面的内容,我很困惑为什么这甚至可以工作。
有人可以点亮一下吗?
【问题讨论】:
-
3 > 2 > 1 === true > 1 === false. -
1 < 2 < 3 < 4 < 5从左到右求值。 1 小于 2。是的。 true 小于 3,所以为 true。 true 也小于 4,所以 true。 true 也小于 5。如此真实。其余部分遵循相同的推理。 -
参见:es5.github.io/#x11.8(或更高规格)
标签: javascript