使用逻辑或 || 设置默认值时,只需将变量放在左侧,默认值放在右侧,表达式会返回第一个“真值”(truthy)的值。如果左侧变量是 false、0、""、null、undefined 或 nan,则返回右侧的默认值;否则返回左侧变量的原始值。这种方法简单直接,但要注意它无法区分 0 和 "" 与 undefined 的区别。

|| 运算符在布尔上下文中的短路行为是怎样的
|| 运算符遵循从左到右的求值顺序,一旦遇到第一个真值就立即停止并返回该值。这种短路特性使得它在条件判断和默认值赋值中非常高效。例如,当左侧操作数为真时,右侧操作数根本不会被执行,这可以用来避免潜在的错误或节省计算资源。

function testOr(a, b) {
console.log("Left operand:", a);
console.log("Right operand:", b);
return a || b;
}
// 测试用例
console.log(testOr(1, 2)); // 输出: 1 (左侧为真,短路)
console.log(testOr(0, 2)); // 输出: 2 (左侧为假,返回右侧)
console.log(testOr(null, "default")); // 输出: "default" (null为假,返回右侧)
console.log(testOr("", "default")); // 输出: "default" (空字符串为假,返回右侧)
console.log(testOr(false, true)); // 输出: true (false为假,返回右侧)如何验证 || 对不同类型值的处理结果
通过实际运行代码可以验证 || 对不同数据类型的具体影响。数字 0、空字符串 ""、null、undefined、false 和 NaN 都被视为假值,而所有其他值(包括非零数字、非空字符串、对象、数组等)都被视为真值。这意味着在使用 || 设置默认值时,如果希望保留这些假值作为有效输入,就需要使用更严格的检查方法,如 ?? 运算符或显式的 typeof 检查。
立即学习“Java免费学习笔记(深入)”;

function checkFalsyValues() {
const values = [0, "", null, undefined, false, NaN, {}, [], "hello", 42];
const defaultValue = "DEFAULT";
values.forEach(val => {
const result = val || defaultValue;
console.log(`Input: ${val} (${typeof val}) -> Result: ${result}`);
});
}
checkFalsyValues();基于程序中某个输入、条件或结果的具体问题
在实际开发中,一个常见的问题是:当用户传入 0 或空字符串 "" 时,使用 || 设置的默认值会错误地覆盖这些有效的输入值。例如,在一个配置系统中,如果允许用户指定页码为 0(表示第一页),使用 page || 1 会导致 0 被替换为 1,从而产生错误的行为。这种情况下,应该使用 ?? 运算符或显式检查 undefined 来确保只有真正的缺失值才会被替换。


















