为什么 0 && true echo 0 在 js 中?

qiu*_*tao 5 javascript

如题

我所知

(if this part is true) && (this part will execute)

if(condition){
   (this part will execute)
}
Run Code Online (Sandbox Code Playgroud)

0 是假的,那么为什么不回显假而是 0?

在此处输入图片说明

Vad*_*ich 8

因为运算符&&返回第一个 falsey 元素,否则它们返回最后一个元素

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


Rak*_*uri 5

来自 MDN:

expr1 && expr2 -- 如果可以转换为 false,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时,如果两个操作数都为 true,则 && 返回 true;否则,返回 false。

表达式1 || expr2 -- 如果可以转换为 true,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时,|| 如果任一操作数为 true,则返回 true。

!expr -- 如果其单个操作数可以转换为 true,则返回 false;否则,返回 true。

一些可以转换为 false 的表达式是:

  • 无效的
  • 0
  • 空字符串(“”或''或``)
  • 不明确的

短路评估

由于逻辑表达式是从左到右计算的,因此使用以下规则测试它们是否可能存在“短路”计算:

  • false &&(任何内容)被短路评估为 false。
  • 真实 || (任何东西)被短路评估为真。


axi*_*iac 1

逻辑运算符的JavaScript文档解释道:

逻辑运算符通常与Boolean(逻辑)值一起使用。当它们存在时,它们会返回一个Boolean值。但是,&&and||运算符实际上返回指定操作数之一的值,因此如果这些运算符与非Boolean值一起使用,它们可能会返回非Boolean值。