为什么0 &&布尔值为0而不是布尔值?

Rad*_*tam -2 javascript expression boolean boolean-expression

为什么0 &&和布尔值计算为0而不是布尔值?

0 && false
> 0
0 && true
> 0

但是false && 0返回false而true && 0返回true

false && 0
> false

我认为数值和假表达式总是会返回一个布尔值.

1 && false
> false

Que*_*tin 5

请参阅MDN的文档:

&&和|| 运算符实际上返回一个指定操作数的值,因此如果这些运算符与非布尔值一起使用,它们可能返回非布尔值

和

expr1 && expr2:如果可以转换为false,则返回expr1; 否则,返回expr2.

由于0可以转换为false,并且0是expr1,它返回0.