为什么这个对象没有定义

Why is this object undefined?

本文关键字:定义 对象 为什么      更新时间:2023-09-26

当我执行这段代码时,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 "foo "。甚至提醒foo。Id属性,firebug显示错误:

alert(foo.id) //foo is undefined

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

编辑:我赋值了两次,抱歉。但即使我不这样做,我也会有相同的firebug错误

您想要哪个foo ?数组中的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);
 };