gpt4 book ai didi

javascript - 函数内部构建的对象数组存在类型问题

转载 作者:行者123 更新时间:2023-12-03 04:20:04 26 4
gpt4 key购买 nike

我正在进行嵌套 API 调用并将结果片段放入对象数组中。当我将其打印到控制台时,它看起来很好。但是当我尝试调用这些片段上的函数时,它们就崩溃了。

以下是除私有(private) API URL 之外的代码:

var gate = new Array();

jQuery.getJSON(endPoint + "method=GetUsersWithTicketsEventId", function(tickets) {
jQuery.each(tickets.message, function(i, ticket) {
gate[i] = new Object();

jQuery.getJSON(endPoint + "method=GrabUsersCustomEventInfo&userId=" + ticket.UserId, function(answers) {
jQuery.each(answers.message, function(j, answer) {
if (answer.meta_key == "42_Volunteering") {
if (answer.meta_value != "Array") {
gate[i].Roles = answer.meta_value.split(';');
} else {
gate[i].Roles = new Array();
}
} else if (answer.meta_key == "42_1_TOSDate") {
gate[i].Date = new Date(answer.meta_value);
}

console.dir(gate[0].Date); // This works
});
});

});

console.dir(gate); // This works
console.dir(gate[0].Date); // This returns undefined
});

第二个 console.dir() 的结果似乎格式良好:

> Array(237)
> [0 … 99]
> 0: Object
> Date: Mon May 08 2017 21:09:09 GMT-0700 (Pacific Daylight Time)
> __proto__: Object
> constructor: function Date()
...

我认为这与变量作用域有关,但当控制台输出与解释器所看到的明显不同时,我不明白如何调试它。

最佳答案

在代码末尾:

console.dir(gate); // This works:

因为您之前已经定义了对象,并且您告诉控制台打印出该对象,该对象将随着更多数据的进入而更新。

console.dir(gate[0].Date); // This returns undefined

这将返回未定义,因为在执行的此时,数组实际上是空的。您的内部提取尚未填充该对象,因此它是一个 undefined reference 。

关于javascript - 函数内部构建的对象数组存在类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com