js中的 || 与 && 运算符自己的理解
学js的时候遇到运算符的问题,根据一位博主的说法,有了大致的了解,已经介绍的很详细了,我这边也贴过来。原文地址
js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:>逻辑与&&、逻辑或||和逻辑非!。
当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规则如下:关于&&
- 两边条件都为true时,结果才为true;
- 如果有一个为false,结果就为false;
- 当第一个条件为false时,就不再判断后面的条件
- 注意:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果为false,返回的会是第一个为假的值。
关于||
- 只要有一个条件为true时,结果就为true;
- 当两个条件都为false时,结果才为false;
- 当一个条件为true时,后面的条件不再判断
- 注意:当数值参与逻辑或运算时,结果为true,会返回第一个为真的值;如果结果为false,会返回第二个为假的值;
关于!
- 当条件为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,会返回第二个为假的值;
严谨来说,是这样的(同一个符号连续使用的情况):
当数值参与逻辑与运算时,会返回第一个为假的值,若没有假的值,则返回最后一个值
当数值参与逻辑或运算时,会返回第一个为真的值,若没有假的值,则返回最后一个值

浙公网安备 33010602011771号