【发布时间】:2015-11-17 09:07:17
【问题描述】:
我正在尝试在对象内部编写一个简单的 for 循环。本质上,它所做的是在它加上 delta 之前设置对象的 Z 位置,除了第 0 个对象只是简单地将 delta 添加到它的原始位置。以下是我用来执行此操作的代码:
this.objs[0].setZ(this.objs[0].getZ()+delta);
var i;
for (i = 0; i < this.n; i++) {
this.objs[i+1].setZ(this.objs[i].getZ()+delta);
alert("i = " + i + " i+1 =" + i+1);
}
由于某种原因,警报在第一次传递时返回 i = 0 i+1 = 01,在第二次传递时返回 i = 1 i+1 = 11。这似乎将 i 视为字符串或其他东西,因为我希望警报在第一遍打印出 i = 0 i+1 = 1 和 i = 1 i+ 1 = 2 在第二个。
我认为我在 Firefox 开发工具中运行代码时遇到的以下 TypeError 似乎证实了这一点。
TypeError: this.objs[(i + 1)] is undefined
我到底在做什么错 i+1 是错误的类型?
----编辑----
我注意到 for 循环超出了范围,因此我将其更改为:
for (i = 1; i < this.n; i++) {
this.objs[i].setZ(this.objs[i-1].getZ()+delta);
alert(this.n);
}
}
(this.n 的值 = 3)。出于某种原因,当 i=3 时,它会一直循环。我不知道为什么..
【问题讨论】:
标签: javascript arrays indexing typeerror