Javascript chained inequality给出奇怪的结果
问题描述:
(0 <= 0 <= 0) === false
(-1 < 0 <= 0 <= 0) === true
这是怎么回事?在一些情况下,JavaScript实际上是否存在不平等链接?Javascript chained inequality给出奇怪的结果
答
键入问题,然后被答复打击。 Javascript没有不等式链接。相反,0 <= 0 <= 0
变成true <= 0
,其被评估为1 <= 0
。的确,0 < 0 <= 0
评估为true
。
答
操作员没有链接,但是precedence。这里所有的操作员都有相同的优先级,所以操作从左到右进行。
当你比较涉及一个布尔值,the MDN explains how the comparison works:
如果一个操作数是布尔型,布尔操作数转换为 1,如果它是真实的,+ 0,如果它是假的。
这意味着所述第一操作是根据优先级分解为
((0 <= 0) <= 0)
是
true <= false
是
false
,第二个是
(true <= 0) <= 0
是
false <= 0
这是true
。
啊,你是对的菲利克斯。对于那个很抱歉;我在发帖之前搜索了一段时间,但没有看到那一个。作为另一方,我有没有办法直接将其作为副本关闭? – 2013-03-18 21:44:26