JavaScript 中的双竖线/或 || 赋值语法说明
1. || 是逻辑 OR(逻辑或)运算符
在 JavaScript 中,
x || y 的行为是:
- 如果
x是 truthy,返回x; - 如果
x是 falsy,返回y。
注意:它不是返回true/false,而是返回其中一个操作数的原始值(短路求值)。
2. 什么是 falsy 值?
以下 8 种值被认为是 falsy:
false0-00n(BigInt 零)""、''、``(空字符串)nullundefinedNaN
其余所有值都是 truthy(包括
"0"、"false"、[]、{}、Infinity 等)。
举例说明
let b;
// 情况1: b 是 undefined(falsy)
let a = b || 1; // a = 1
// 情况2: b = 0(falsy)
b = 0;
a = b || 1; // a = 1
// 情况3: b = ""(falsy)
b = "";
a = b || 1; // a = 1
// 情况4: b = null(falsy)
b = null;
a = b || 1; // a = 1
// 情况5: b = 5(truthy)
b = 5;
a = b || 1; // a = 5
// 情况6: b = "hello"(truthy)
b = "hello";
a = b || 1; // a = "hello"
// 情况7: b = [](truthy!)
b = [];
a = b || 1; // a = [] (注意!空数组是 truthy)
常见陷阱
这个写法不能区分
0、空字符串等有效值和“未设置”状态:
let b = 0; // 用户明确输入了数字 0
let a = b || 1; // 结果 a = 1 ❌ 可能不是你想要的!
如果你希望 只在
b 为 null 或 undefined 时设默认值,应该用:
✅ 更安全的写法(ES2020+):空值合并运算符 ??
let a = b ?? 1;
- 仅当
b是null或undefined时,才使用默认值1。 0、""、false等都会被保留。
let b = 0;
let a = b ?? 1; // a = 0 ✅
✅ 总结
表格
| 写法 | 含义 | 适用场景 |
|---|---|---|
| `a = b | 1` | |
a = b ?? 1 |
仅 b 为 null/undefined 时用 1 |
更精确的默认值处理(推荐) |
💡 如果你控制不了b的类型(比如可能为0或空字符串但仍是有效值),优先使用??而不是||。
版权所有 © 【代码谷】 欢迎非商用转载,转载请按下面格式注明出处,商业转载请联系授权,违者必究。(提示:点击下方内容复制出处)
源文: JavaScript 中的双竖线/或 || 赋值语法说明 ,链接:https://www.daimagu.com/article/2602041347562984.html,来源:代码谷
评论