说明: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