检查对象是否在 JavaScript 中具有嵌套属性
使用可选的链接运算符检查对象是否具有嵌套属性。
可选的链接运算符允许我们读取嵌套属性的值而不会在对象上不存在该属性时抛出错误,例如 obj?.a?.b
。
const obj = {a: {b: 'hello'}};
const value = obj?.a?.b;
console.log(value); // 👉️ hello
if (value !== undefined) {
// if this block runs
// 👉️ property exists on the object
}
我们使用可选的链接运算符来检查对象上是否存在嵌套属性。
使用可选的链接
?.
运算符类似于使用.
(点)表示法访问对象的属性,但是,当嵌套属性不存在时?.
运算符不会抛出错误。
相反,如果对象的属性不存在可选链接 ?.
运算符返回 undefined。
const obj = {};
const value = obj?.a?.b?.c;
console.log(value); // 👉️ undefined
if (value !== undefined) {
// if this block runs
// 👉️ property exists on the object
}
我们用了 ?.
运算符访问对象上不存在的嵌套属性。
当 ?.
运算符试图访问对象的 a 属性,它返回一个 undefined 值,并且短路也返回 undefined。
如果要省略 ?.
运算符,只需使用 .
(点)符号,你会得到一个错误 - “Cannot read property b of undefined”。
或者,我们可以使用逻辑 AND 运算符。
使用逻辑与 (&&) 运算符检查对象是否具有嵌套属性
检查对象是否具有嵌套属性:
-
使用点表示法访问第一个属性并检查它是否不等于
undefined
。 - 使用逻辑 AND 运算符链接另一个条件。
-
访问嵌套属性并检查它是否不等于
undefined
。
const obj = {};
if (obj.a !== undefined && obj.a.b !== undefined && obj.a.b.c !== undefined) {
// if this block runs
// 👉️ the a.b.c property exists on the object
}
我们手动检查嵌套属性是否存在。
我们使用了逻辑 AND &&
运算符,因此 if 语句中的条件将从左到右逐一检查。
如果任何条件的计算结果为假值,则 if 块将不会运行。
在上面的示例中,我们明确检查每个属性是否等于 undefined。 我们可能会在网上看到仅使用
&&
运算符的示例,但是,这种方法很容易出错。
以下示例检查对象属性的值是否为真。
JavaScript 中的真值都是非假值。 Falsy 值为:false、0、""、null、undefined、NaN。
不要写这样的代码:
const obj = {a: {b: {c: 0}}};
if (obj && obj.a && obj.a.b && obj.a.b.c) {
// 👉️ This never runs
// even though the `c` property exists
}
我们检查对象的属性是否为真,这不足以让我们确定该属性是否存在于对象上。
a.b.c 属性设置为 0,这是一个虚假值,因此即使属性 a.b.c 存在于对象上,if 块也不会运行,因为条件不满足。
相关文章
使用 CSS 和 JavaScript 制作文本闪烁
发布时间:2023/04/28 浏览次数:146 分类:CSS
-
本文提供了使用 CSS、JavaScript 和 jQuery 使文本闪烁的详细说明。
在 PHP 变量中存储 Div Id 并将其传递给 JavaScript
发布时间:2023/03/29 浏览次数:69 分类:PHP
-
本文教导将 div id 存储在 PHP 变量中并将其传递给 JavaScript 代码。
在 JavaScript 中从字符串中获取第一个字符
发布时间:2023/03/24 浏览次数:93 分类:JavaScript
-
在本文中,我们将看到如何使用 JavaScript 中的内置方法获取字符串的第一个字符。
在 JavaScript 中获取字符串的最后一个字符
发布时间:2023/03/24 浏览次数:141 分类:JavaScript
-
本教程展示了在 javascript 中获取字符串最后一个字符的方法