当你在JavaScript中看到问号(?)和双问号(??)时,它们通常是用于条件处理和空值合并的操作符。
问号 ?:
在JavaScript中,问号?
可以用于条件运算符(ternary operator),形式为 condition ? expr1 : expr2。
它的作用是根据条件 condition 的真假来选择执行 expr1 还是 expr2。
示例:
let age = 18;
let status = (age >= 18) ? '成年人' : '未成年人';
console.log(status); // 输出: 成年人
双问号 ??:
双问号 ??
是空值合并运算符(nullish coalescing operator),用于判断某个值是否为 null 或 undefined。
当左侧的表达式结果为 null 或 undefined 时,它会返回右侧的默认值。
示例:
`let defaultValue = '默认值';
let userInput = null;
let result = userInput ?? defaultValue;
console.log(result); // 输出: 默认值
双问号运算符与逻辑或 || 的区别在于,逻辑或 || 在判断时会把一些 Falsy 值(如空字符串 ‘’ 或 0)视为 false,而双问号 ?? 仅在严格的 null 或 undefined 时才返回右侧的值。
这两个运算符在日常的JavaScript开发中非常有用,能够简化条件判断和处理空值的代码。