JS运算符 && 与 || 遵守短路原则

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) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”
(表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值