gpt4 book ai didi

javascript - 为什么这个对象是未定义的?

转载 作者:行者123 更新时间:2023-11-28 13:55:49 24 4
gpt4 key购买 nike

当我执行此代码时,Firebug 显示错误:

$.ajax({
type: "GET",
url: "../foos/.....",
dataType: "json",
success: function (foos, textStatus, XMLHttpRequest) {
for (var i = 0; i <= foos.length; i++) {
var foo = foos[i];
alert(foo.id);
};
}});

json 返回带有 id 和 name 属性的 var“foos”。即使警告 foo.id 属性,firebug 也会显示错误:

alert(foo.id) //foo is undefined

为什么 foo 在警报中正确显示时却未定义?

编辑:我分配了 foo 两次,抱歉。但即使我不这样做,我也会遇到同样的 Firebug 错误。

最佳答案

你想要哪个 foo?数组 (foos) 中的 foo 或您在循环中重新声明的 foo:

for (var i = 0; i <= foos.length; i++) {
var foo = {
id: "",
name:""
};

var foo = foos[i];
alert(foo.id);
};

但是,最重要的是,这不是问题所在。问题是您从 0 循环到 foos.length:

for (var i = 0; i <= foos.length; i++)

这意味着在循环的最后一次迭代中,索引i比数组的最大索引大1。当您尝试读取此元素时,它确实是未定义的。

您应该将循环更改为:

for (var i = 0; i < foos.length; i++)

(当然还要去掉重新定义的 foo)。

结果应该是:

for (var i = 0; i < foos.length; i++) {
var foo = foos[i];
alert(foo.id);
};

关于javascript - 为什么这个对象是未定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8009049/

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