我试图更好地理解 JavaScript 中的 nullish 合并运算符 (??) 应该如何工作。有人可以解释一下为什么吗:
let a = b ?? 0;
返回这个:
未捕获的引用错误:b 未定义
文档说(强调我的):
空合并 (
) 运算符是一个逻辑运算符,当其左侧操作数为??
或null
时,返回其右侧操作数,否则返回其左侧操作数手侧操作数。undefined
由于
b
未定义,我的期望是 a
将被分配值 0
。
可以定义变量,但具有
null
或 undefined
值。
如果您确定该变量未分配给
undefined
,您可以使用 typeof
检查它是否已定义:
const a = true;
console.log(typeof a === "undefined"); // false, the "a" variable is defined
console.log(typeof b === "undefined"); // true, the "b" variable is either set to undefined or not defined
try/catch
块中:
try {
console.log(someVar);
} catch (error) {
// if the code goes here, it means that the variable someVar is not defined
}
结论:
??
运算符不是用于检查变量是否已定义。