为什么(true && {})求值为{},但({} && true)求值为true?

wil*_*.09 4 javascript boolean-logic boolean

正如标题所说,我不太明白为什么(真正的&& {})给了我{},但反过来却不一样.

编辑:作为一个后续,因为我使用的是一个布尔运算符,为什么这个表达式在计算时不会给我一个布尔值?

Poi*_*nty 8

表达式操作数&&从左到右进行计算.所述的值&&表达是子表达式的最后计算的值.在你的情况下,这将是两种情况下最正确的表达方式.

所以,用(true && {})中,&&运营商首先评估true.它不是假的,所以它然后评估{}并返回表达式结果.

随着 ({} && true)它向后做同样的事情,所以评估的第二个表达式是true.