1.&& -- 与
符号前面和后面都为true则返回true,但是有一方为false则返回false。那么下面的内容会输出什么呢?
alert(1&&1); alert(1&&0); alert(0&&0); alert(0&&1);前提是你要知道,0即false, 1or2即true;
2.|| -- 非
符号前面和后面任何一方为true则返回true,双方均为false则返回false。那么下面的内容会输出什么呢?
alert(1||1); alert(1||0); alert(0||0); alert(0||1);前提是你要知道,0即false, 1or2即true;
不留悬念了,输出的内容依次是1, 0, 0, 0, 1,1,0,1
让我们总结一下:
只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
由上两个测试可知,逻辑运算符,“||”和“&&”都是遵行短路原则,只要确定符号前面的真假,既可确定返回值。
需要说明的是“&&”的优先级是高于“||”的,下面测试:
alert(1||'a'&&2);
返回结果是1。
根据反证原理,我们假设“||”的优先级不低于“&&”(这里只所以用“不低于”,是为了同时证明等级相同的情况)。
根据上面我们得出的结论(1),(1||'a')将返回前面的值1,(1&&2)根据结论(4)应该返回后面的值2。这显然不对,由此可知“&&”的优先级是高于“||”的。
敲知识点
&&的运算优先级大于 ||逻辑运算的短路特性:(表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”
(表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”
如对本文有疑问, 点击进行留言回复!!
【JavaScript笔记(一)】万丈高楼平地起 - 基本概念篇
轻松解决 org.apache.taglibs.standard.tlv.JstlCoreTLV 困惑
vert实践五——Json?Protocol Buffer?FlatBuffers?
[基于tensorflow的人脸检测] 基于神经网络的人脸检测8——验证训练好的神经网络
网友评论