我试图在对象上执行一些逻辑。当我将对象打印到控制台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']
时,我会得到类型错误:
未定义不是对象(评估'问题[" 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
}