逻辑与&&、逻辑或||和逻辑非!

点击跳转原文

js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:逻辑与&&、逻辑或||和逻辑非!。

当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规则如下:

1.&&

1.1两边条件都为true时,结果才为true;
1.2如果有一个为false,结果就为false;
1.3当第一个条件为false时,就不再判断后面的条件

注意:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果为false,返回的会是第一个为假的值。

2.||

2.1只要有一个条件为true时,结果就为true;
2.2当两个条件都为false时,结果才为false;
2.3当一个条件为true时,后面的条件不再判断

注意:当数值参与逻辑或运算时,结果为true,会返回第一个为真的值;如果结果为false,会返回第二个为假的值;

3.!

3.1当条件为false时,结果为true;反之亦然。

上代码说明:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html lang= "en" >
<head>
   <meta charset= "UTF-8" >
   <title>demo</title>
   <script>
     console.log( 5 && 4 ); //当结果为真时,返回第二个为真的值4
     console.log( 0 && 4 ); //当结果为假时,返回第一个为假的值0
     console.log( 5 || 4 ); //当结果为真时,返回第一个为真的值5
     console.log( 0 || 0 ); //当结果为假时,返回第二个为假的值0
     console.log((3||2)&&(5||0)); //5
     console.log(!5); //false
   </script>
</head>
<body>
  
</body>
</html>

补充:逻辑与的优先级是高于逻辑或的;

比如console.log(3||2&&5||0),会先算2&&5的值为5,然后再3||5----3,最后再3||0----3,所以最终结果为3.

补充

表达式a && 表达式b :  计算表达式a(也可以是函数)的运算结果,
                      如果为 True, 执行表达式b(或函数),并返回b的结果;
                      如果为 False,返回a的结果;

表达式a || 表达式b :   计算表达式a(也可以是函数)的运算结果,
                      如果为 Fasle, 执行表达式b(或函数),并返回b的结果;
                      如果为 True,返回a的结果;

转换规则:

对象为true;
非零数字为true;

零为false;

非空字符串为true;
空字符串为法false;
其他为false;

例如:
var  a =  obj || " "  ;     //如果 obj 为空,a就赋值为 " " ;
var  a = check() &&  do();    //如果check()返回为真,就执行do(),并将结果赋值给 a;

其他网友的补充

今天复习js继承的时候发现了一个问题,先上代码了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script type= "text/javascript" >
  window.onload = function () {
   var mama,
   mama1,
   test = function (name) {
   debugger;
   this .name = name || 'mama' ;
   };
   debugger;
   mama = new test();
   mama1 = new test( "mama1" );
   alert(mama.name); //name = mama
   alert(mama1.name); // name = mama1
  }
 
  </script>

在执行构造函数的时候,无参的构造函数返回的name是'mama',有参数时,实例的name就是参数值了。
这个时候我就有点犯迷糊了,为什么逻辑运算符||能这么用呢?
由于是C#出身,所以对js ||这样用感觉很奇怪。
没辙,不懂先研究,实验实验就知道了。

?
1
2
3
4
var b, c, d;
   b = true || 0; //b=true;
   c = false || 0; //c=0;
   d = 1 || 0; //d=1;

换成别的呢?

?
1
2
3
4
var b, c, d;
   b = 1-1 || 1+1; //b=2
   c = function () { return undefined } || function () { return 1}; //c=function();
   d = c(); //d=undefined
?
1
2
3
4
var b, c, d;
   b = 1-1 || 1+1; //b=2
   c = function () { return 1 } || function () { return undefined}; //c=function();
   d = c(); //d=1
?
1
b = {} || { a: 1, getA: function () { return this .a}}; //b=object

?
1
2
3
var b, c, d;
   b = { a: 1, getA: function () { return this .a } } || {}; //b=object
   c = b.getA(); //c=1;

通过这几个实验,可以看出,JS的||并不是像C#里面的||一样 单纯的返回一个布尔类型。
大家都知道js的布尔类型判定是对象是true,非零是true,非空字符串是true其余的都是false

 由此得出
逻辑或 ||  : var a = 表达式1 || 表达式2

      表达式1    表达式2    a取值
        1          0      表达式1结果值
        1        1      表达式1结果值
        0        1      表达式2结果值
        0        0      表达式2结果值
 

逻辑与 &&  : var a = 表达式1 && 表达式2

      表达式1    表达式2    a取值

        1          0      表达式2结果值
        1        1      表达式2结果值
        0        1      表达式1结果值
        0        0      表达式1结果值

主要原因是因为短路,逻辑或 || 在前面有一个ture的时候则不看后面直接停止,逻辑与&&同理。
然后计算赋值和我们平时一样之获取最新的一次计算结果值。

例如

?
1
b = (1 + 1, 2 + 2, 3 + 3); //b=6;

嘛嘛,当然只是猜测。
以上仅供参考。萌新一只,望各位大佬轻批。

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Java 中,逻辑与是用 & 运算符表示的。它是二元运算符,因此它需要两个操作数来执行运算。它的作用是将两个布尔值进行逻辑与运算,如果两个操作数都是 true,则结果为 true,否则结果为 false。 例如: ``` boolean a = true; boolean b = false; boolean c = a & b; // 结果为 false ``` 逻辑与运算符的优先级比逻辑或运算符低,因此在一个表达式中同时出现时,逻辑与运算符会先被计算。例如: ``` boolean a = true; boolean b = false; boolean c = true; boolean d = a & b || c; // 结果为 true ``` 在这个表达式中,a & b 的结果为 false,因此逻辑或运算符后面的 c 会被忽略。 ### 回答2: 在Java中,逻辑与是一种用于将多个逻辑条件进行比较的运算符。逻辑与运算符用两个"&"符号表示,用于判断两个条件是否同时满足。当两个条件都为真时,逻辑与的结果为真;只要有一个条件为假,逻辑与的结果就为假。 例如,我们可以使用逻辑与运算符来判断一个年份是否为闰年。根据闰年的定义,年份必须满足两个条件:1)能被4整除;2)不能被100整除(或者能被400整除)。用代码表示,可以写成如下形式: ```java int year = 2024; if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) { System.out.println(year + "年是闰年"); } else { System.out.println(year + "年不是闰年"); } ``` 以上代码中,第一个条件`year % 4 == 0`用来判断年份是否能被4整除,第二个条件`(year % 100 != 0 || year % 400 == 0)`用来判断年份是否不能被100整除或者能被400整除。只有当这两个条件同时满足时,才会输出"是闰年",否则输出"不是闰年"。 逻辑与运算符在Java中的使用非常灵活,我们可以将多个条件进行组合判断,并根据判断结果执行相应的逻辑。这样可以大大提高代码的灵活性和可读性。 ### 回答3: 在Java中,逻辑与是一种用于连接两个逻辑表达式的操作符,表示当且仅当两个逻辑表达式的结果都为true时,整个逻辑与表达式的结果才为true,否则结果为false。 逻辑与使用符号"&&"来表示,例如:`if (a > 0 && a < 10)`,表示当a的值大于0且小于10时,条件成立。如果a的值不满足这两个条件中的任何一个,整个条件判断结果为false。 逻辑与的运算规则是从左到右依次判断,如果第一个逻辑表达式的结果为false,则整个逻辑与表达式的结果也为false,不再继续判断后续的逻辑表达式。这种短路求值的特点可以提高程序的效率。 逻辑与的运算对象可以是任何布尔值或布尔表达式,也可以是返回布尔值的方法调用。例如:`boolean result = isTrue() && isFalse()`,其中isTrue()和isFalse()分别为返回布尔值的方法,如果isTrue()返回true,并且isFalse()返回false,整个逻辑与结果为false。 逻辑与在控制流程中经常被使用,特别是与if语句和while循环结合使用。通过使用逻辑与,我们可以根据多个条件判断来控制程序的执行流程,使代码更加灵活和精确。 总而言之,在Java中,逻辑与是一种用于连接两个逻辑表达式的操作符,只有当两个逻辑表达式都为true时,整个逻辑与表达式的结果才为true。它在控制流程中有重要的作用,可以用于多个条件判断和程序流程的控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值