标题
据我所知
(if this part is true) && (this part will execute)
if(condition){
(this part will execute)
}
0为假,那么为什么不回显false而是0?
答案 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的表达式是:
短路评估
当逻辑表达式从左到右求值时,将使用以下规则对它们进行测试以进行可能的“短路”评估:
答案 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不会在true
和false
上返回&&
或||
,而是返回||
运算符的第一个真实操作数,或最后一个,以及&&
运算符的第一个伪操作数,或最后一个。
您可以找到更多信息here。
答案 5 :(得分:0)
在javascript中,除了null
,undefined
,false
,0
和NaN
以外的所有语言都是Truthy
。
您的情况是why not echo false but 0?
。
JavaScript的ToBoolean函数将其评估为第一个falsey值。即
0 && true => 0 true && undefined => undefined null && undefined => null
如果您严格需要true
或false
,请选择not-not
,即!!
。
!!0 && true => false !!true && undefined => false !!null && undefined => false