逻辑运算符
逻辑非
!可以用来对一个值进行非运算- 它可以对一个布尔值进行取反操作
- 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会执行