if (rightArmy.pikeman.length > 0) {
x = rightArmy.pikeman.length;
console.log(x + " X");
console.log(rightArmy.pikeman[0].hp);
/*291*/ while (rightArmy.pikeman[x-1].hp < 1 && x>0) {
rightArmy.pikeman.pop();
x--;
}
}
rightArmy.pikeman是一个数组,最后一个console.log显示rightArmy.pikeman [0]的值“hp”是“-80”。这意味着rightArmy.pikeman [0]必须存在。在此之前,我使用console.log检查X的值,结果是“1”。然后我得到这个:Javascript无法读取现有对象的值?
Uncaught TypeError: Cannot read property 'hp' of undefined at HTMLButtonElement.fight (java.js:291)
为什么不能读取它,这怎么可能?我在代码中为您标记了第291行。
控制台显示:
java.js:289 1 X
13:53:54.830 java.js:290 -80
但我希望x在每次迭代后都有一个新值,这就是为什么我要调整数组的大小。 –
那么你可以不是这样做: '而(rightArmy.pikeman.length> 0 && rightArmy.pikeman.hp> 1)...' 并丢弃x变量;这是多余的。 – nadavvadan
您提供的两种解决方案都不会改变任何内容,程序仍会抛出相同的错误。 –