簡體   English   中英

JavaScript 中看似隨機的 TypeError

[英]Seemingly random TypeError in JavaScript

目前,我正在開發一個可以在網站上運行的小型迷你游戲,但我很早就設法遇到了一個相當奇怪的 TypeError。 這是我目前正在使用的代碼:

level0 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];

let character = {
    x: 0,
    y: 0,
}

function setBoard(array2d) {
let i;
let m = 0;
for(i = 0; i < (array2d.length * 10); i++) {
    if (m == 6) {
        break;
    };
    let z = document.getElementById(`${String(m)}-${i}`).classList;
    // let z1 = `${m}-${i} is ${z}`;
    // console.log(z1);
    if (z == "noselect wall") {
        array2d[m][i] = 1;
    } else if (z == "noselect gameboard character") {
        array2d[m][i] = 2;
        character.x = i;
        character.y = m;
        document.getElementById(`${String(m)}-${i}`).innerHTML = "YOU";
    } else if (z == "noselect gameboard goal") {
        array2d[m][i] = 3;
        document.getElementById(`${String(m)}-${i}`).innerHTML = "GOAL";
    }

    if (i == 9) {
        m++;
        i = -1
    }
}
}
setBoard(level0);
console.log(character);
console.log(level0[character.x + 1][character.y]);

function moveRight(array2d) {
    if (array2d[character.x + 1][character.y] == 0) {
        character.x++;
        console.log(character);
    }
}

錯誤如下: Uncaught TypeError: Cannot read property '3' of undefined at script.js:43我檢查了屬性是否存儲為數字,並且它們似乎記錄為數字。 我還確保這嚴格來說是一個 JavaScript 問題,因為在整個過程中,沒有 HTML 似乎在任何時候都無法正常運行。 有什么我想念的嗎? 任何幫助將不勝感激!

如您所見,索引 m 代表外部索引,i 代表內部

array2d[m][i] = 2; character.x = i; character.y = m;

但是,此 console.log 語句使用 i(character.x) 作為外部,將超過 6 以使其未定義

console.log(level0[character.x + 1][character.y]);

那么 undefined[m] 將是未捕獲的類型錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM