【发布时间】:2017-05-03 11:21:09
【问题描述】:
我想进一步澄清一些事情。
考虑一下:
var a = 42;
var b = "abc";
var c = null;
a || b; // 42
a && b; // "abc"
c || b; // "abc"
c && b; // null
我知道对于|| 运算符,如果对第一个操作数的测试为真,则|| 表达式将得出第一个操作数(a 或c)的值。如果测试为假,|| 表达式将产生第二个操作数 (b) 的值。
相反,对于&& 运算符,如果测试为真,则&& 表达式将产生第二个操作数(b) 的值。如果测试为假,&& 表达式将得出第一个操作数(a 或 c)的值
那么,当您将 && 和 || 运算符与以下链接值一起使用时,究竟发生了什么:
if(a && b && c && d && e){
//do something;
}
if(a || b || c || d || e){
//do something
}
当您链接这些值时,究竟发生了什么?因为在第一个示例中(涉及 && 运算符)如果 a 为真,那么 b 应该返回对吗?那么在这一点上甚至考虑到c或d吗?
【问题讨论】:
-
在第一个表达式中,c、d 和 e 绝对不会被忽略(除非 a 或 b 为假并且表达式短路)。在 && 链中,返回值将是第一个 false 表达式,或者如果所有表达式都为真,则返回值将是最终表达式。当您实际上没有将结果分配给某物时,您通常不必担心返回或不返回哪个 - 如果 a,b,则执行第一个表达式。 C。 d。和 e 都为真,只要至少有一个为真,就执行第二个表达式。
-
感谢您提供实际有用的回复!
-
如果对第一个操作数的测试为真不,表示如果是真,与“真”不同。跨度>
标签: javascript logical-operators