当前位置: 首页 > 面试题库 >

如何处理对可能未定义的数据的调用函数?

毛成济
2023-03-14
问题内容

我主要使用React,经常发现当我编写依赖于组件状态的函数时,必须执行检查以查看状态是否已定义,然后再执行任何操作。

例如:我有一个函数,该函数.map()用于遍历从数据库中获取的对象数组,并为数组中的每个对象生成jsx。该函数在render()我的组件函数中调用。第一次render()调用时,初始数组为空。这将导致错误,因为,当然,数组的第一个索引是未定义的。

我一直在通过进行条件检查来查看数组的值是否未定义来规避此问题。每次编写一个if语句的过程都有些笨拙,我想知道是否有更好的方法执行此检查或完全避免检查。


问题答案:

使用map之前检查数组:

arr && arr.map()

要么,

arr && arr.length && arr.map() // if you want to map only if not empty array

要么,

我们甚至可以这样使用(如devserkan所评论):

(arr || []).map()

根据您的评论:

我希望有一个像C#(arr?.map())这样的安全导航运算符

是的,显然。这在JavaScript中被称为可选链接,目前仍在提议中。如果被接受,则可以这样使用:

arr?.map()

您可以在阶段1中看到它,可以在其中使用babel预设stage1

但是很明显,除了检查数组的长度,您的要求将无法满足:

这将导致错误,因为,当然,数组的第一个索引是未定义的。

因此,我建议您使用:

arr && arr.length && arr.map()


 类似资料:
  • 问题内容: 当我要实现Authorize.net付款网关时。但是,我收到此错误: 调用未定义的函数curl_init() 请让我知道其中有什么问题。 问题答案: 如果您使用的是Windows: 转到您的php.ini文件,并从以下行的开头删除标记: 保存文件后, 必须 重新启动HTTP服务器软件(例如Apache),然后才能生效。 对于Ubuntu 13.0及更高版本,只需使用已解包的软件包。在终

  • 问题内容: 我刚刚将脚本切换到其他服务器。在以前的服务器上,它可以完美地工作,现在,我将它们切换到其他服务器上,我无法理解问题。 我不确定是否有帮助,但这是相关的代码。 PHP版本是:PHP 5.3.2 问题答案: 从文档开始,在PHP 5.4.0发行之前: 仅当PHP作为Apache模块安装时才支持此功能。 PHP 5.4.0和更高版本无条件支持此功能。 所述文档还包括替换功能,这些功能通过逐步

  • 我正在OSX El Capitan和Apache服务器上运行最新版本的PHP(目前为5.6.22)。 我正在尝试使用PostgreSQL数据库,实际上,昨天已经成功了,但在我重写了httpd之后。conf文件和默认文件(我想这就是问题所在)我收到了以下消息: 调用中未定义的函数pg_connect()。。。 问题是我没有改变php。ini文件。如果我运行phpinfo();我得到了etc/php。

  • 问题内容: 我正在使用Linux,并且具有以下文件: 该函数在中声明和定义。我需要在中使用该函数,因此我将该函数声明为 在。 但是,在编译过程中,我得到了错误 怎么了? 谢谢。 预计到达时间:多亏了我收到的答案,我现在有了以下内容: 在fileA.h中,我有 在fileA.c中,我有 在fileB.h中,我有 在fileB.cpp中,我有 但是,我现在有错误 问题答案: 如果您确实是使用C而不是C

  • 我知道这个问题已经在这个网站上被问过几次了,但我真的开始怀疑我到底是不是疯了。 我的配置:WampServer 2.5 64位(PHP5.5.12,Apache 2.4.9) 我的步骤: 下载Microsoft驱动程序SQLSRV32.exe从https://www.microsoft.com/en-us/download/details.aspx?id=20098 从我的桌面上下载的. exe中