js中的逻辑与和逻辑或随笔

逻辑与:&&,都真才真

逻辑或:||,一真都真

逻辑运算两侧不都是布尔值时,会隐式转换为布尔值
转换规则:
转换为true:非0数字(包含infinity)、非空字符串
转换为false:0、空字符串、undefined、NaN、null


短路语法
逻辑与 a&&b:类似于串联电路,如果a为真,流通到b,值为b;如果a为假,流不到b,值为a;

逻辑或 a || b:类似于并联电路,如果a为真,结果就为a;如果a为假,通过b,结果为b;

练习:

 1 //逻辑运算顺序:非、与、或
 2 // 练习1:false || !false && false || true;
 3 var num1 = false || !false && false || true;
 4 /*
 5 false || !false && false || true
 6 = false || true && false || true
 7 = false || false || true
 8 = false || true
 9 = true
10 */
11 //非布尔值在参与逻辑运算时会隐式转换为布尔值
12 //转换为true:非0数字、非空字符串
13 //转换为false:0、空字符串、undefned、null、NaN
14 // 练习2 4 && "hello" || !false || !true && null
15 var num2 = 4 && "hello" || !false || !true && null;
16 /*
17 4 && "hello" || !false || !true && null
18 = 4 && "hello" || true || false && null
19 //参照逻辑与串联短路图,a && b,若a为真,值为b;若a为假,值为a;此处4隐式转换为true,值是"hello",
20 = "hello" || true || false    
21 //参照逻辑或并联短路图,a || b,若a为真,值为a;若a为假,值为b
22 = "hello" || false
23 = "hello"
24 */
25 console.log(num1);    //输出 true
26 console.log(num2);    //输出hello
原文地址:https://www.cnblogs.com/zjp-/p/9004231.html