
在javascript中,逻辑或运算符 || 用于连接两个或多个表达式。它的基本工作原理是:如果第一个操作数是“真值”(truthy),则返回第一个操作数的值;否则,它会评估第二个操作数并返回其值。这个过程被称为“短路评估”(short-circuit evaluation)。
在条件语句(如 if 语句)中,|| 运算符的返回值会被隐式转换为布尔值进行判断。这意味着只要 || 运算符的任何一个操作数被评估为真值,整个条件表达式就会被视为 true。
JavaScript中的真值和假值:
许多初学者在使用 || 运算符进行多值比较时,会遇到一个常见的误区。他们可能期望 if (variable === "value1" || "value2") 能够判断 variable 是否等于 "value1" 或 等于 "value2"。然而,这种写法并不会按照预期工作。
让我们通过一个具体的D&D角色职业选择案例来分析:
立即学习“Java免费学习笔记(深入)”;
假设我们有一个HTML select 元素,用于选择角色职业:
<select name="class" id="character-class">
<option value="artificer">Artificer</option>
<option value="barbarian">Barbarian</option>
<!-- ... 其他职业 ... -->
<option value="sorcerer">Sorcerer</option>
<option value="wizard">Wizard</option>
</select>然后,在JavaScript中尝试根据选择的职业进行判断:
let characterClass = document.getElementById("character-class").value; // 假设默认值为 "artificer"
console.log(characterClass); // 输出 "artificer"
if (characterClass === "wizard" || "sorcerer") { // 错误写法
console.log("Squishy boi");
} else {
console.log("Not a wizard/sorcerer");
}当 characterClass 的值为 "artificer" 时,这段代码的输出却是 "Squishy boi",而不是预期的 "Not a wizard/sorcerer"。这是因为 if (characterClass === "wizard" || "sorcerer") 这个条件表达式被错误地解析了:
要正确地使用 || 运算符进行多值比较,必须为每个比较条件重复变量本身:
这是最直接和明确的修正方式。为 || 运算符的每个部分都提供一个完整的比较表达式:
let characterClass = document.getElementById("character-class").value; // 假设默认值为 "artificer"
console.log(characterClass);
if (characterClass === "wizard" || characterClass === "sorcerer") { // 正确写法
console.log("Squishy boi");
} else {
console.log("Not a wizard/sorcerer");
}现在,如果 characterClass 是 "artificer":
当需要比较的值数量较多时,重复比较法可能会导致代码冗长且不易维护。以下是两种更优雅的替代方案:
includes() 方法可以判断一个数组是否包含某个指定的值,返回 true 或 false。这使得它非常适合用于检查一个变量是否在多个预设值之中。
let characterClass = document.getElementById("character-class").value;
console.log(characterClass);
const squishyClasses = ["wizard", "sorcerer"]; // 将所有“脆弱”职业放入数组
if (squishyClasses.includes(characterClass)) { // 使用 includes() 方法
console.log("Squishy boi");
} else {
console.log("Not a wizard/sorcerer");
}这种方法尤其适用于当需要比较的职业列表很长时,代码会更加简洁和可读。
当根据一个变量的不同值需要执行不同的操作时,switch 语句是一个非常清晰的选择。
let characterClass = document.getElementById("character-class").value;
console.log(characterClass);
switch (characterClass) {
case "wizard":
case "sorcerer":
console.log("Squishy boi");
// 这里可以执行与这些职业相关的其他逻辑
break;
// case "barbarian":
// case "fighter":
// console.log("Tanky boi");
// break;
default:
console.log("Not a wizard/sorcerer");
break;
}在 switch 语句中,如果多个 case 块需要执行相同的代码,可以像上面那样将它们连续排列,而不使用 break,这样会“穿透”到下一个 case,直到遇到 break 或 switch 块结束。
通过深入理解 || 运算符的工作原理并掌握正确的比较策略,开发者可以避免常见的逻辑错误,编写出更健壮、更易于维护的JavaScript代码。
以上就是JavaScript逻辑或(||)运算符的正确用法与多值比较策略的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号