为什么空合并运算符在这里不起作用?

问题描述 投票:0回答:1

我试图更好地理解 JavaScript 中的 nullish 合并运算符 (??) 应该如何工作。有人可以解释一下为什么吗:

let a = b ?? 0;

返回这个:

未捕获的引用错误:b 未定义

文档说(强调我的):

空合并 (

??
) 运算符是一个逻辑运算符,当其左侧操作数为
null
undefined
时,返回其右侧操作数,否则返回其左侧操作数手侧操作数。

由于

b
未定义,我的期望是
a
将被分配值
0

javascript null-coalescing-operator
1个回答
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
}

结论:

??
运算符不是用于检查变量是否已定义。

© www.soinside.com 2019 - 2024. All rights reserved.