为什么0 && true在js中回显0?

时间:2019-01-10 07:25:40

标签: javascript

标题

据我所知

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

if(condition){
   (this part will execute)
}

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

enter image description here

6 个答案:

答案 0 :(得分:4)

因为运算符public class User { private String username; private String password; private String firstname; private String lastname; private String email; private String address; private int phone; //getter, setter } 返回第一个falsey元素,否则返回最后一个元素

&&

答案 1 :(得分:3)

来自MDN:

  

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

     

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

     

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

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

  • NaN
  • 0
  • 空字符串(“”或“或”)
  • 未定义

短路评估

当逻辑表达式从左到右求值时,将使用以下规则对它们进行测试以进行可能的“短路”评估:

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

答案 2 :(得分:0)

JavaScript documentation of logical operators解释:

  

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

答案 3 :(得分:0)

Boolean


同样,0是虚假的,'0'(非空字符串)是真实的

答案 4 :(得分:0)

a && b等同于

if (a) {
  return b;
} else {
  return a;
}

因此,在您的情况下,a等于0,这是虚假的,因此您得到a。

与其他语言不同,JavaScript不会在truefalse上返回&&||,而是返回||运算符的第一个真实操作数,或最后一个,以及&&运算符的第一个伪操作数,或最后一个。

您可以找到更多信息here

答案 5 :(得分:0)

在javascript中,除了nullundefinedfalse0NaN以外的所有语言都是Truthy

您的情况是why not echo false but 0?

JavaScript的ToBoolean函数将其评估为第一个falsey值。即

0 && true
=> 0

true && undefined
=> undefined

null && undefined
=> null

如果您严格需要truefalse,请选择not-not,即!!

!!0 && true
=> false

!!true && undefined
=> false

!!null && undefined
=> false