逻辑运算符用于测试真假值。它们主要用于条件语句中,帮助我们基于某些条件来控制程序流程。JavaScript 中有三种逻辑运算符:&& (与), || (或), 和 ! (非)。
逻辑运算符的优先级
在 JavaScript 中,不同的运算符有不同的优先级。逻辑运算符的优先级如下:
!的优先级最高&&的优先级次之||的优先级最低
这意味着在表达式中,! 会先于 && 和 || 计算,而 && 又会先于 || 计算。
示例代码
let x = true; let y = false; console.log(!x || y); // 输出:false console.log(x && !y); // 输出:true
在这个例子中,由于 ! 的优先级最高,所以它会首先被计算。接着,&& 会被计算,最后才是 ||。
逻辑运算符的短路求值
逻辑运算符还有一个特性,叫做“短路求值”。这意味着,当可以确定整个表达式的值时,JavaScript 不会继续计算表达式的其余部分。
- 对于
&&运算符,如果第一个操作数为false,则不会计算第二个操作数,因为整个表达式的结果已经确定。 - 对于
||运算符,如果第一个操作数为true,则不会计算第二个操作数,因为整个表达式的结果已经确定。
示例代码
-- -------------------- ---- -------
--- - - --
--- - - --
---- -- - - -- -
-------------------------
- ---- -
-------------- - ------------------------
-
---- -- - - -- -
-------------- -- -------------
-在这个例子中,第一个 if 语句中的条件使用了 && 运算符。由于 a 的值为 0,这会导致 b / a 的计算结果出错。但是,由于 && 的短路求值特性,第二个操作数不会被计算,因此避免了运行时错误。
第二个 if 语句中的条件使用了 || 运算符。由于 b 的值不为 0,所以 a / b 不会被计算。
逻辑运算符的实际应用
逻辑运算符在实际编程中有许多用途,例如验证表单数据、控制程序流程等。
验证用户输入
假设我们需要确保用户输入的邮箱地址格式正确,并且年龄在 18 到 60 之间。
-- -------------------- ---- -------
-------- ------------------- ---- -
--- ------------ - -----------------------------------------------
--- ---------- - --- -- -- -- --- -- ---
--------------- -- ----------- -
-----------------------
- ---- -
-------------------------------
-
-
----------------------------------- ---- -- ------------
----------------------------------- ---- -- --------------------在这个示例中,我们使用了正则表达式来验证邮箱地址,并使用 && 来确保年龄在规定的范围内。
逻辑运算符和布尔类型
虽然逻辑运算符通常用于处理布尔类型的值,但它们也可以应用于任何类型的值。在这种情况下,JavaScript 会将这些值转换为布尔类型。
- 非零数字、非空字符串、对象和数组被视为
true - 零、空字符串、
null、undefined和NaN被视为false
示例代码
let num = 5;
let str = "";
let obj = {};
console.log(num && "数字不为零"); // 输出:"数字不为零"
console.log(str && "字符串为空"); // 输出:空字符串 ""
console.log(obj && "对象存在"); // 输出:对象存在在这个例子中,num 是一个非零数字,所以 num && "数字不为零" 表达式的值为 "数字不为零"。str 是一个空字符串,因此 str && "字符串为空" 表达式的值为 ""。obj 是一个对象,所以 obj && "对象存在" 表达式的值为 "对象存在"。
通过这些例子,我们可以看到逻辑运算符如何帮助我们在 JavaScript 中构建更复杂的条件判断逻辑。