При запуске функции moveRight() я получаю сообщение об ошибке, не распознавая map [x] [y], заявив, что это не определено. Это происходит только тогда, когда «Player» находится в последнем цикле y. Я не понимаю, почему это происходит, может кто-нибудь помочь объяснить?Проблемы с вложенными циклами
var map = [
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Player", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"]
];
function moveRight() {
var breakLoop = false;
for (y = 0; y < map.length; y++) {
for (x = 0; x < map[y].length; x++) {
var posX = map[x][y].indexOf("Player");
if (posX <= -1) continue;
if (y >= map[y].length-1) {
breakLoop = true;
break;
}
breakLoop = true;
console.log("x: " + x);
console.log("y: " + y);
map[x][y] = "Blank";
map[x][y+1] = "Player";
break;
}
if (breakLoop) break;
}
}
Если вы хотите объявить переменную (например, 'y' или' x'), вы должны поместить перед ней 'var'. Ваши 'y' и' x' просачиваются в глобальную область. – thejh