在JavaScript中,逻辑运算符用于根据多个条件评估某件事是真还是假。
这一次,我们将讨论逻辑运算符的类型、如何使用它们以及示例。
逻辑运算符是用于处理真伪值(true和false)的运算符,它表示以下三种类型。
运算符 | 示例 | 说明 |
---|---|---|
逻辑与(&&) | expr1 && expr2 | (逻辑与) 如果 expr1 能被转换为 false,那么返回 expr1;否则,返回expr2。因此,&&用于布尔值时,当操作数都为 true 时返回 true;否则返回 false. |
逻辑或(||) | expr1 || expr2 | (逻辑或) 如果 expr1 能被转换为 true,那么返回 expr1;否则,返回expr2。因此,|| 用于布尔值时,当任何一个操作数为 true 则返回 true;如果操作数都是 false 则返回 false。 |
逻辑非(!) | !expr | (逻辑非) 如果操作数能够转换为 true 则返回 false;否则返回 true。 |
虽然逻辑运算符描述为处理真伪值,但操作数不必总是为true或false,它可以是任何类型的操作数,例如数字或字符串。
如果操作数不是真伪值,则根据规则将其转换为true或false以进行求值。
从这里开始,让我们看看如何按类型使用逻辑运算符。
如果前面和后面的操作数都为真,则 AND 运算符返回真,否则返回假。
操作数 && 操作数
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
请参阅下面的评估结果。
let num = 5;
// true && true
console.log(num > 2 && num === 5); // true
// true && false
console.log(num > 2 && num === 6); // false
在内部是这样运行的。
num>2为true,num===5为true→整体结果为true
num>2为true,num===6为false→整体结果为false
如果操作数不是布尔值,则会将其转换为 true 或 false 并进行计算。
AND运算符用于检查是否满足if语句中给出的所有条件。
let age = 7;
let height = 130;
if (age > 6 && height > 128) { // true && true
console.log('满足乘坐过山车的条件。');
}
// "满足乘坐过山车的条件。"
如果其前面或后面的操作数中至少有一个为真,则 OR 运算符返回true,否则返回false。
操作数 || 操作数
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
除非两个操作数都为假,否则结果始终为真。
let num = 5;
// true && true
console.log(num > 2 || num === 5); // true
// true && false
console.log(num > 2 || num === 6); // true
// false && false
console.log(num > 6 || num === 6); // false
OR运算符用于检查是否满足if语句中给出的任何条件。
let scoreA = 80;
let scoreB = 65;
if (scoreA >= 80 || scoreB >= 70) { // true || false
console.log('测试通过')
}
// "测试通过"
NOT运算符如果操作数为真,则返回false;如果操作数为假,则返回true。
这意味着返回操作数评估结果的反向真伪值。
!操作数
console.log(!true); // false
console.log(!false); // true
在下面的示例中,num > 10的评估false是 。
NOT 运算符返回其反转结果,因此整体结果为真。
let num = 5;
console.log(!(num > 10)); // true
NOT 运算符在您想要否定给定条件时使用,例如在 if 语句中。
let snacks = false;
if (!snacks) {
console.log('工作时间内禁止吃零食');
}
// "工作时间内禁止吃零食"
如果你使用布尔值或者做一些数值计算,你可以想象它的计算结果是真还是假。
但如果不是,你应该知道以下关于什么值是真或假的规则。
//规则
假值为false
非假值为true
假值是以下七类值。
false
null
undefined
0
0n
NaN
“”(空字符)
最好先只记住错误的值,然后知道其他一切都为真。
作为逻辑表达式进行求值是从左到右,如果前面的操作数为假,则AND运算符不会计算后面的操作数。
true && console.log('这个控制台被运行'); // "这个控制台被运行"
// 因为前面的操作数是假的、不计算后面的操作数
false && console.log('这个控制台不会被运行');
AND运算符要求其所有操作数都为真,因此当前一个操作数的计算结果为假时,我们知道结果为假。
此外,如果前面的操作数为真,则OR运算符不会计算后面的操作数。
false || console.log('这个控制台被运行'); // "这个控制台被运行"
// 因为前面的操作数是假的,、不计算后面的操作数
true || console.log('这个控制台不会被运行');
OR运算符只需要它的一个操作数为真,所以我们知道当前一个操作数的计算结果为真时,结果将为真。
这样,当该值确定后,不再进行进一步的计算,称为短路求值。
如果我们看一下短路求值算法,就更容易理解了。
AND运算符按以下顺序工作:
value1 && value2;
按从前到后的顺序计算操作数
将每个操作数转换为布尔值
如果前一个操作数的计算结果为 false,则在该点停止计算并返回该操作数
如果评估所有操作数(全部为真),则返回最后一个操作数
// 如果前面的操作数为假,则返回该操作数,忽略后面的操作数
console.log(null && '后面的操作数'); // null
console.log(0 && '后面的操作数'); // 0
// //如果前面的操作数为真,返回后面的操作数
console.log(1 && '后面的操作数'); // "后面的操作数"
console.log('1' && '后面的操作数'); // "后面的操作数"
OR 运算符按以下顺序工作:
value1 || value2;
按从前到后的顺序计算操作数
将每个操作数转换为布尔值
如果前一个操作数的计算结果为真,则在该点停止计算并返回该操作数
如果评估所有操作数(全部为假),则返回最后一个操作数
// 如果前面的操作数为真,则返回该操作数,忽略后面的操作数
console.log(100 || '后面的操作数'); // 100
console.log('hello' || '后面的操作数'); // "hello"
// 如果前面的操作数为假,则返回后面的操作数
console.log("" || '后面的操作数'); // "后面的操作数"
console.log(undefined || '后面的操作数'); // "后面的操作数"
现在,我们来谈谈逻辑运算符。
//要点
逻辑运算符是处理真假值的运算符
不需要记住所有的真假值,最好能理解被认为是假的值。
在确定值的时候不再进行计算,这叫做短路求值。
逻辑运算符也经常与运算符(如比较运算符)一起使用。
试验其他运算符,看看哪些值是真或假。
评论列表:
发布于 4天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论