(js基础篇)4.逻辑运算符

540 阅读2分钟

说明:js中逻辑运算符:||(或),&&(与),!(非)

1."||"逻辑或

用法:

  • 如果参与运算的任意一个参数为true,返回的结果就为true,否则返回false

    // 逻辑或
    console.log(true || true);  // true
    console.log(false || true); // true
    console.log(true || false); // true
    console.log(false || false); // false
    
  • 如果操作数不是布尔值,那么它将会被转化为布尔值来参与运算

    if( 1 || 0){ // 相当于 if( true || false )
      console.log('执行了');
    }
    
  • 或运算寻找第一个真值

    计算流程:
    1.从左到右依次计算操作数
    2.处理每一个操作数时,都将其转化为布尔值。结果如果是 true,就停止计算,返回这个操作数的初始值
    3.如果所有的操作数都被计算过(也就是,转换结果都是 false),则返回最后一个操作数。
    PS:返回的值是操作数的初识形式,不会做布尔转换

    console.log(1 || 0); // 1
    console.log(3 || 2); // 3
    console.log(null || null); // null
    console.log(null || 1); // 1
    console.log(undefined || 1 || null); // 1
    
  • 实际用法

获取变量列表或者表达式的第一个真值
短路求值

// 获取变量或表达式的第一个真值
let call = '';
let nick = '';
let initName ='paul';
console.log(call || nick || initName); // paul
// 短路求职:获取第一个真值,并返回该值
true || console.log('执行该命令1');  // 没有执行后面的
false || console.log('执行该命令2');  // "执行该命令2"

2."&&"逻辑与

用法:

  • 当两个操作数都是真值,与操作返回 true,否则返回 false

    // 逻辑与
    console.log(true && true); // true
    console.log(false && true); // false
    console.log(true && false); // false
    console.log(false && false); // false
    
  • 与操作寻找第一个假值

计算流程:
1.从左到右依次计算操作数。
2.将处理每一个操作数时,都将其转化为布尔值。结果是 false,就停止计算,并返回这个操作的初始值。
3.如果所有的操作数都被计算过(也就是,转换结果都是 true),则返回最后一个操作数

console.log(1 && 0); // 0
console.log(1 && 5); // 5
console.log(null && 5); // null
console.log(0 && 'what is'); // 0
console.log('my name' && 'as'); // as
console.log(1 && 2 && null && 3);  // null
console.log(1 && 2 && 4 && 3);  // 3

PS:逻辑与的优先级比逻辑或要高 && > ||

3."!"逻辑非

  • 将操作数转化为布尔类型:true/false

  • 返回相反的值

    console.log(!true); // false
    console.log(!!1); // true
    console.log(!!'你好'); // true