javascript - 如何在三元运算符或布尔运算符中处理布尔值本身?
问题描述
我正在解析 JSON 响应,如果数据存在,我需要按原样返回值,否则返回 null。我尝试为此使用三元运算符/布尔运算符,它适用于其他数据类型,但不适用于布尔值本身
例子:
let dummyObj = {
data: {
testdata: false
}
};
console.log(dummyObj.data && dummyObj.data.testdata || null); // returns null always, should return false
console.log((dummyObj.data && dummyObj.data.testdata) ? dummyObj.data.testdata : null); // same behavior, always returns null if the testdata value is false
该语句始终返回 null,因为 testdata 的值本身为 false,它进入 or 条件并返回 null。如果数据不是布尔值或值为真,这可以正常工作。
我怎样才能使这项工作?有没有办法处理布尔值?
解决方案
Nullish Coalescing 运算符是一个不错的选择。现代浏览器大多支持这一点,可选链也有助于安全地验证嵌套属性
console.log(dummyObj?.data?.testdata ?? null);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining