1 && 2 && 3返回3。有人可以解释为什么

Nan*_*i A 1 javascript

我最近在一次采访中被问到了这个问题。我知道在JavaScript中评估从左到右。1 && 2应该是假的吧?我在这里读到另一个问题,即1 && 2返回2。而AND返回第一个伪造的值。但是感觉模糊。有人可以详细说明吗?

Gho*_*med 8

1 && 2 && 3 
Run Code Online (Sandbox Code Playgroud)

相同的

if (1) {
    if (2) {
        if (3) {
          return 3
        } else {
          return 3
        }
    } else {
        return 2
    }
} else {
    return 1
}


1 && 2 && 3  //3
1 && 0 && 3  //0
1 && false && 3  //false
false && 0 && 3  //false
1 && 0 && false  //0
Run Code Online (Sandbox Code Playgroud)


j08*_*691 7

AND(&&)运算符执行以下操作:

  • 从左到右评估操作数。

  • 对于每个操作数,将其转换为布尔值。如果结果为假,则停止并返回该操作数的原始值。

  • 如果所有操作数均已求值(即全部为真),则返回最后一个操作数。

换句话说,AND返回第一个伪造的值,或者如果找不到则返回最后一个值。当所有值均为真时,将返回最后一个值。

参考:https//javascript.info/logical-operators

1 && 2应该是假的吧?

不,在布尔型上下文中的Javascript中,这些值转换为true。只有6个被转换为数值falsy,他们是:false0,空字符串(例如''""), ,nullundefinedNaN