js中的短路运算符

最近看到一个360面试题,题目如下:

      下面代码的输出值是?

   alert(1&&2);

  正确的结果是 2.


1.后来仔细研究了一下JS逻辑运算的相关内容,在MDN上面找到相应描述:

下面是逻辑运算符的说明:

运算符示例说明
逻辑与 (&&)expr1&&expr2如果expr1 能转换成false则返回expr1,否则返回expr2. 因此, 在Boolean环境中使用时, 两个操作结果都为true时返回true,否则返回false.
逻辑或 (||)expr1||expr2如果expr1能转换成true则返回expr1,否则返回expr2. 因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true;二者操作结果都为false时返回false.
逻辑非(!)!expr如果单个表达式能转换为true的话返回false,否则返回true.

能够转换为false的表达式有:false,""(空字符串),0和NaN,null,undefined.

能够转化为true的值为:true,任何非空字符串,任何非零数字值(包括无穷大),任何对象

以上规则已经再次确认,摘自"javascript高级程序设计(第3版)"这本书

 

也就是说在面试题中,第一个值为1,类型是number,该值没有办法转化为false,于是返回第二个值也就是2,这样就可以理解了.

 

2. 另外JS逻辑计算还有一个短路计算原则,MDN描述如下:

由于逻辑表达式的运算的顺序是从左到右,也可以用以下规则进行"短路"计算:

  • false && (anything)  短路计算的结果为false.
  • true || (anything)  短路计算的结果为 true

3.一些简单逻辑运算例子理解

(1)逻辑与

a4=false && (3 == 4)  // f && f 结果为 false
a5="Cat" && "Dog"     // t && t 结果为 Dog
a6=false && "Cat"     // f && t 结果为 false
a7="Cat" && false     // t && f 结果为 false
a8 = true && 4 && "aaa"; //结果为"aaa"

(1)逻辑或

o4=false || (3 == 4)  // f || f 结果为 false
o5="Cat" || "Dog"     // t || t 结果为 Cat
o6=false || "Cat"     // f || t 结果为 Cat(这个例子非常迷惑人)
o7="Cat" || false     // t || f 结果为 Cat

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值