微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果对象未定义,如何检查特定键是否未定义?

如何解决如果对象未定义,如何检查特定键是否未定义?

我想做什么?

我想检查特定键是否为 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.archerundefined(目前),我无法继续检查 character.archer.description

解决方法

您可以使用 optional chaining operatorall evergreen browsers today support。您只需在每个可能返回 ?(或 .,实际上,这也有效)的级别的 undefined 之前添加 null

代码示例:

if (character?.archer?.description !== undefined) { ... } 
,

这正是可选链运算符的用途!它看起来像这样 ?.,如果定义了左手,它将返回右手参数,否则将返回 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?