如果对象未定义,如何检查特定键是否未定义?
How do I check if a specific key is undefined if the object is undefined?
我想做什么?
我想检查一个特定的键是否是 undefined
,但不能,因为对象的更高级别是 undefined
。
目前尝试执行此操作的代码是什么?
character
对象的结构是(在另一个存在的对象中):
{
...
character: {
...,
archer: {
...,
description: "shoots things"
}
}
}
我只想这样做,但会导致错误。
if (character.archer.description !== undefined) { ... }
我已经实现了一个修复,但希望优化是这样的:
...
if (character !== undefined) {
if (character.archer !== undefined) {
if (character.archer.description !== undefined) {
setDescription(character.archer.description);
}
}
}
...
我期望结果是什么?
我希望代码能够意识到 if 语句应该 运行,即使 undefined
of undefined
,一般来说应该意味着 undefined
。
实际结果如何?
TypeError: Cannot read property 'undefined' of undefined.
我认为可能是什么问题?
由于 character.archer
是 undefined
(目前),我无法继续检查 character.archer.description
。
您可以使用optional chaining operator that all evergreen browsers today support。您只需在 .
之前为每个可能返回 undefined
(或 null
,实际上也有效)的级别添加 ?
。
您的代码示例:
if (character?.archer?.description !== undefined) { ... }
这正是可选链接运算符的用途!它看起来像这样 ?.
如果定义了左手,它将 return 右手参数,否则它将 return undefined
useEffect(() => {
const description = character?.archer?.description;
if (description !== undefined) {
setDescription(description);
}
}, []);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
我想做什么?
我想检查一个特定的键是否是 undefined
,但不能,因为对象的更高级别是 undefined
。
目前尝试执行此操作的代码是什么?
character
对象的结构是(在另一个存在的对象中):
{
...
character: {
...,
archer: {
...,
description: "shoots things"
}
}
}
我只想这样做,但会导致错误。
if (character.archer.description !== undefined) { ... }
我已经实现了一个修复,但希望优化是这样的:
...
if (character !== undefined) {
if (character.archer !== undefined) {
if (character.archer.description !== undefined) {
setDescription(character.archer.description);
}
}
}
...
我期望结果是什么?
我希望代码能够意识到 if 语句应该 运行,即使 undefined
of undefined
,一般来说应该意味着 undefined
。
实际结果如何?
TypeError: Cannot read property 'undefined' of undefined.
我认为可能是什么问题?
由于 character.archer
是 undefined
(目前),我无法继续检查 character.archer.description
。
您可以使用optional chaining operator that all evergreen browsers today support。您只需在 .
之前为每个可能返回 undefined
(或 null
,实际上也有效)的级别添加 ?
。
您的代码示例:
if (character?.archer?.description !== undefined) { ... }
这正是可选链接运算符的用途!它看起来像这样 ?.
如果定义了左手,它将 return 右手参数,否则它将 return undefined
useEffect(() => {
const description = character?.archer?.description;
if (description !== undefined) {
setDescription(description);
}
}, []);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining