在 JavaScript 中检查值是否存在并且是否为零(或不为零)始终返回零而不是布尔值

Ste*_*nos 0 javascript

我试图检查一个数字是否存在,如果存在,该值是否为零或其他值。但检查零总是返回零而不是布尔值。

const example = 0

console.log( example === 0 )            // true 
console.log( example && example !== 0 ) // 0
console.log( example && example === 0 ) // 0

Run Code Online (Sandbox Code Playgroud)

我知道这可能与 JS 中的 0 为假有关,但我不明白为什么在最后两种情况下它的计算结果为 0 - 如果有的话,它不应该计算为 false 吗?

Vig*_*aut 5

在计算机科学中,有一个短路的概念。如果两个或多个条件通过&&(逻辑“与”)捆绑在一起,并且第一个条件的计算结果为 false,则它仅返回第一个条件的结果,而不是同时计算第二个条件。

在这种情况下,0为假,因此不评估第二个条件并返回第一个条件的结果。