我试图检查一个数字是否存在,如果存在,该值是否为零或其他值。但检查零总是返回零而不是布尔值。
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 吗?
在计算机科学中,有一个短路的概念。如果两个或多个条件通过&&(逻辑“与”)捆绑在一起,并且第一个条件的计算结果为 false,则它仅返回第一个条件的结果,而不是同时计算第二个条件。
在这种情况下,0为假,因此不评估第二个条件并返回第一个条件的结果。