首页 > 解决方案 > 如何在三元运算符或布尔运算符中处理布尔值本身?

问题描述

我正在解析 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。如果数据不是布尔值或值为真,这可以正常工作。

我怎样才能使这项工作?有没有办法处理布尔值?

标签: javascript

解决方案


Nullish Coalescing 运算符是一个不错的选择。现代浏览器大多支持这一点,可选链也有助于安全地验证嵌套属性

console.log(dummyObj?.data?.testdata ?? null); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining


推荐阅读