为什么函数返回false?

时间:2016-08-21 13:42:51

标签: javascript

我试图缩短以下代码:

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

2 个答案:

答案 0 :(得分:10)

表达式a === b === 0被解释为写成(a === b) === 0。结果为false,因为(a === b)提供true,而true不是===0

可以想象一种编程语言可以理解由=====或其他任何东西连接的表达式链,这意味着所有值都应该在一个大的“组相等”比较中进行比较。但是,JavaScript并不是一种语言。

答案 1 :(得分:6)

这是由于如何评估运营商。在JavaScript中,从左到右(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

评估相等运算符

这意味着:

a === b === 0

一步之后就成为了这个:

true === 0

由于数字零不等于布尔值true,因此表达式返回false。