js中的 || 与 && 运算符详解

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

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

重点:

表达式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;
逻辑或 ||  : 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;

嘛嘛,当然只是猜测。

  

  

参考:https://www.jb51.net/article/140789.htm

原文地址:https://www.cnblogs.com/mmzuo-798/p/14302019.html