【问题标题】:Variable in for loop is undefined?for循环中的变量未定义?
【发布时间】:2013-07-08 20:43:50
【问题描述】:

运行 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);

【问题讨论】:

  • 这和你的数据有关。

标签: javascript variables for-loop scope undefined


【解决方案1】:

您正在初始化 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] = [];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多