js中的 || 与 && 运算符自己的理解

学js的时候遇到运算符的问题,根据一位博主的说法,有了大致的了解,已经介绍的很详细了,我这边也贴过来。原文地址

js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:>逻辑与&&、逻辑或||和逻辑非!。
当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规则如下:

关于&&

  1. 两边条件都为true时,结果才为true;
  2. 如果有一个为false,结果就为false;
  3. 当第一个条件为false时,就不再判断后面的条件
  4. 注意:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果为false,返回的会是第一个为假的值。

关于||

  1. 只要有一个条件为true时,结果就为true;
  2. 当两个条件都为false时,结果才为false;
  3. 当一个条件为true时,后面的条件不再判断
  4. 注意:当数值参与逻辑或运算时,结果为true,会返回第一个为真的值;如果结果为false,会返回第二个为假的值;

关于!

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

关于1、2、3点其实没有太大的疑惑,但是关于第四点,作者给了个例子

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 

刚开始不太理解,直接真的都返回第一个,假的都返回第二个不就行了,这样似乎不好记忆。
不过后来领悟了一下, || 运算符 又叫短路运算符,顾名思义,遇到通的路,他就直接走通了,不用再管后面的路线通断情况,所以像这样的式子(字符串、字符等什么会被判定为true,什么会被判定为false,参照其他文章)

console.log( 5 || 4 || undefined || 'a' || 'aaa');//返回5
console.log( 0 || 4 || undefined || 'a' || 'aaa');//返回4
console.log( 0 || 0 || undefined || 'a' || 'aaa');//返回a

不论后面有多长,都只要找到第一个为真的情况就行了,如果一直没找到,就一直找到最后一个,这也符合人类的正常思考习惯


同理对于 && 运算符也是如此,区别是它找到第一个为假的情况就行了

console.log( 5 && 4 && undefined && 'a' && 'aaa');//返回undefined
console.log( 5 && 0 && undefined && 'a' && 'aaa');//返回0
console.log( '' && 0 && undefined && 'a' && 'aaa');//返回

所以依照我的理解,这两句话

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

严谨来说,是这样的(同一个符号连续使用的情况):
当数值参与逻辑与运算时,会返回第一个为假的值,若没有假的值,则返回最后一个值
当数值参与逻辑或运算时,会返回第一个为真的值,若没有假的值,则返回最后一个值

posted @ 2021-08-11 15:25  麻瓜吖  阅读(189)  评论(0)    收藏  举报