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