JavaScript中的||和&&的简单计算

在js里面,逻辑非和逻辑与的很多计算和平时所见的计算有一定的不同。例如:

<html>
<head>
<title>||的隐式转换的计算</title>
</head>
<body>
  <script>
    var c = (a = 3) || (b = 4);
    console.log(a); //3
    console.log(c); //3
    console.log(b); //报错 b is not defined
  </script>
</body>
</html>

在这里面进行逻辑或的操作的时候,并没有像我们想的那样,直接先算a = 3还有b = 4;

而是先将 || 两边的部分分开,然后先算左边部分(满足真值阻塞:只要遇到真值就会马上输出,没有真值就会输出最后一个假值),判断其是否满足为真值,如果满足的话,就不会去运行右边的部分,直接输出左边部分的值。故上述代码只会执行 a = 3,而在 || 右边的就不会执行,就只会返回a的值(3)还有c的值(3),在执行console.log(b)时,代码就会报错。

<html>
<head>
<title>&&隐式转换的计算</title>
</head>
<body>
  <script>
    var d = (a = 4) && (b = 0) && (c = 2);
    console.log(a); //4
    console.log(b); //0
    console.log(c); //报错 c is not defined
    console.log(d); //0 会被阻断不会输出,但是值为0
  </script>
</body>
</html>

 在这里面进行逻辑与的操作的时候,也没有像我们想的那样,直接先算a = 3,b = 4还有c = 2,

而是将这三个式子经&&符号分割开从左往右进行赋值,当遇到假值的时候就会直接输出假值给d,不会继续执行后面的式子,当没有找到假值的时候,就会一直执行到最后,然后将最后一个式子的值传给d(假值阻塞)。故上述代码就是会在执行b = 0,之后就不会继续执行了,并将值赋给d,然后因为c = 2,没有进行运算,故c是没有定义的,运行console.log(c)时就会报错。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值