跳到主要内容

逻辑运算符

逻辑非

  • ! 可以用来对一个值进行非运算
  • 它可以对一个布尔值进行取反操作
    • true -> false
    • false -> true
  • 如果对一个非布尔值进行取反,它会先将其转换为布尔值然后再取反,可以利用这个特点将其他类型转换为布尔值

逻辑与

  • && 可以对两个值进行与运算
  • &&左右都为true时,返回true,否则返回false
  • 与运算时短路的与,如果第一个值为false,则不看第二个值\
  • 与运算是找false,如果找到false则直接返回,没有false才会返回true
  • 对非布尔值进行与运算,它会转换为布尔值然后运算,但是最终会返回原值
    • 如果第一个值为false,则直接返回第一个值
    • 如果第一个值为true,则返回第二个值

逻辑或

  • || 可以对两个值进行或运算
  • ||左右有true时,返回true,否则返回false
  • 或运算也是短路的或,如果第一个值为true,则不看第二个值
  • 或运算是找true,如果找到true则直接返回,没有true才会返回false
  • 对非布尔值进行或运算,它会转换为布尔值然后运算,但是最终会返回原值
    • 如果第一个值为true,则直接返回第一个值
    • 如果第一个值为false,则返回第二个值
let a = 123;
a = !!a;
console.log(typeof a, a); // boolean true

true && alert(123); // 第一个值为true,alert会执行
false && alert(456); // 第一个值为false,alert不会执行

let result = 1 && 2;
console.log(result); // 2
let result2 = 1 && 0;
console.log(result2); // 0
let result3 = 0 && NaN;
console.log(result3); // 0

true || alert(78); // 第一个值为true,alert不会执行
false || alert(90); // 第一个值为false,alert会执行