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
您提供的兩種解決方案都不會改變任何內容,程序仍會拋出相同的錯誤。 –