for循环中的变量未定义?

时间:2013-07-08 20:43:50

标签: javascript variables for-loop scope undefined

当运行Update()时,我收到一条错误,指出map [x]未定义为“map [x] [y] = rawmap [rawmapcount];”而且我不确定为什么?

var currentuser;
var map = new Array(63);
for(x = 0;x < 36;x++) {
    map[x] = new Array(35);
}

function Update(login) {
    $.post("server.php",{update:1,login:login},function(data) {
        if(data == 0) {window.location.href = "WEBSITE";}
        else {
            var rawdata = data.split("[BRK]");
            currentuser = rawdata[0];
            var rawmap = rawdata[1].split("|");
            var rawmapcount = -1;
            var x;
            var y;
            for(x = 0;x < 64;x++) {
                for(y = 0;y < 36;y++) {
                    rawmapcount++;
                    map[x][y] = rawmap[rawmapcount];
                }
            }
        }
    });
}

Update(1);
//setInterval(function() {Update(0);},500);

1 个答案:

答案 0 :(得分:5)

您正在初始化map的前36个位置,但您正尝试访问64个位置,就好像它们都已初始化一样。

for(x = 0;x < 36;x++) { // <= Note the range!
    map[x] = new Array(35);
}
    . . .
        for(x = 0;x < 64;x++) { // <= Note the range!
            for(y = 0;y < 36;y++) {
                rawmapcount++;
                map[x][y] = rawmap[rawmapcount];
            }
        }

此外,您的y范围是36,而不是35.但是,这不会导致错误,因为JavaScript会自动扩展数组的范围。实际上,您可以使用:

初始化map的每个元素
map[x] = [];