[英]JavaScript Type Error Index i+1
我正在尝试在对象内部编写一个简单的for循环。 本质上,它所做的就是将对象的Z位置设置在其加上增量之前,但第0个对象只是将增量添加到其原始位置。 以下是我用来执行此操作的代码:
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时,这会不断循环。 我不知道为什么..
的确,使用了字符串串联而不是加法,但这不会导致您的错误。 在循环的最后一次运行中, i
等于n - 1
,但是您尝试访问的元素n
不存在。 在for循环i < this.n
i < this.n - 1
更改为i < this.n - 1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.