繁体   English   中英

对象显示在控制台中,但始终在启动时添加未定义或空数组

[英]Object shows up in console but always adds an undefined or empty array at start

我正在尝试对对象执行一些逻辑。 当我将对象打印到控制台时console.log(question); 我看到的对象如下:

[15:23:06] undefined
[15:23:06] Object {
[15:23:06]   "id": "213a3e34-1a86-4ae5-bd7c-c882fd1684f8",
[15:23:06]   "text": "What is 4+4",
[15:23:06] }

但是,我在实际引用值时遇到了麻烦。 当我尝试question['text']出现类型错误:

undefined不是对象(评估'question [“ text”]')

我看到控制台上记录了一个未定义的消息,但无法理解它的来源。

注意,我的对象是从对象数组中提取的,如下所示:

question = this.state.questions[1];

问题是从哪里来的。

当我将this.state.questions登录到控制台时,没有看到未定义的任何内容,而是在顶部添加了一个空数组:

[15:22:11] Array []
[15:22:11] Array [
[15:22:11]   Object {
[15:22:11]     "id": "407e7560-a0cd-4272-bafc-795f5e5787be",
[15:22:11]     "text": "What is 2+4",
[15:22:11]   },
[15:22:11]   Object {
[15:22:11]     "id": "213a3e34-1a86-4ae5-bd7c-c882fd1684f8",
[15:22:11]     "text": "What is 4+4",
[15:22:11]   },
[15:22:11]   Object {
[15:22:11]     "id": "9d38c759-6b64-4c1f-9e0e-d3b95a72b3a8",
[15:22:11]     "text": "What is 1+2",
[15:22:11]   },
[15:22:11] ]

这使我相信

根据给定的信息,可以在数据实际进入状态之前访问该属性。 如果以前未加载数据,则尝试访问“ this.state.questions [1]”将给出未定义的消息(即使“ this.state.questions”为空数组)。

为避免这种情况,请确保使用此值的任何函数是:链接到正在获取数据的任何函数上的异步函数,或使用条件确保该值未定义。 例如:

if(typeof this.state.questions[1] !== "undefined") {
 //do something
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM