为什么这个函数会返回false?

4
我正在尝试简化以下代码:

我正在尝试简化以下代码:

var a = 0, b = 0;

function() {
    return a === 0 && b === 0; // returns 'true'
}

因此,我认为以下内容可以胜任:

所以,我想以下内容可能会有用:

var a = 0, b = 0;

function() {
    return a === b === 0; // returns 'false'
}

起初我认为这样的语法会报错,但显然它返回了false。为什么a === b === 0返回false呢?


1
简单的谷歌搜索:site:stackoverflow.com javascript a === b === c - user1106925
抱歉 @squint,我没有注意到。我有点惊讶它没有抛出错误,所以我想和别人分享一下 :P - Angel Politis
2个回答

10
表达式a === b === 0的解释被理解为它被写成了(a === b) === 0。结果是false,因为(a === b)返回true,而true0不是===相等的。
可以想象一种编程语言,它能理解由=====等连接的一系列表达式,这意味着所有的值都应该在一个大的“组相等性”比较中进行比较。然而,JavaScript不是这样一种语言。

啊哈,我知道我漏掉了什么。谢谢@Pointy。 - Angel Politis
4
哇,3分钟内获得了9个赞,而且侧边栏中的“相关问题”明显是重复的…… - Bergi
1
@Bergi 我猜人们是无聊了吗?或者可能是我有魔力。 - Pointy
@Bergi 我确实找过重复内容,但我不太懂 Stack Overflow 的搜索功能,所以做得不好。 - Pointy
@Pointy:我猜你是魔法师 :-) 但是,搜索确实很奇怪,特别是“搜索”、“重复搜索”和“相关”似乎使用不同的算法,导致结果的相关性非常不同。而且,正如squint所提到的,还有谷歌,它会找到一些完全不同的东西。 - Bergi

6

2
感谢您的解释,@Robert。 - Angel Politis
非常感谢。很高兴能够帮助到您。 - Robert Columbia
@Kobi 谢谢,已修复。 - Robert Columbia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接