我是这个社区的新人,当我用JS编写网站时,不小心出现了Uncaught type错误,我竭尽全力“对抗”这个错误,但什么也没发生,我紧急需要你的帮助:
编辑:哪一行会导致它?
Uncaught TypeError: Cannot read properties of undefined (reading 'mano')<br>
at scambiaCarta (script.js:496:16)<br>
at eseguiTurnoCPU (script.js:369:9)<br>
at gestisciTurni (script.js:256:9)<br>
at iniziaGioco (script.js:230:5)<br>
at script.js:221:9
function creaGiocatore(nome) {
return {
nome: nome,
vite: 3,
mano: []
};
}
function eseguiTurnoCPU() {
const giocatoreCorrente = giocatori[turnoCorrente % giocatori.length];
const giocatorePrecedente = giocatori[(turnoCorrente - 1 + giocatori.length)];
if (deveScambiareCarta(giocatoreCorrente)) {
scambiaCarta(giocatoreCorrente, giocatorePrecedente);
} else {
console.log(`${giocatoreCorrente.nome} decide di non scambiare la carta.`);
}
turnoCorrente = (turnoCorrente + 1) % giocatori.length;
setTimeout(gestisciTurni, 2000);
}
function scambiaCarta(giocatore1, giocatore2) {
if (deveBloccareScambioCarta(giocatore1.mano[0])) {
console.log(`${giocatore1.nome} ha il Re in mano. Cucù.`);
return;
}
const index1 = giocatori.indexOf(giocatore1);
const index2 = giocatori.indexOf(giocatore2);
const cartaScambiata = giocatore1.mano.splice(0, 1)[0];
giocatore2.mano.push(cartaScambiata);
const cartaScambiata2 = giocatore2.mano.splice(0, 1)[0];
giocatore1.mano.push(cartaScambiata2);
aggiornaCarte(giocatore1, index1);
aggiornaCarte(giocatore2, index2);
console.log(`${giocatore1.nome} ha scambiato una carta con ${giocatore2.nome}.`);
mostraCarte();
}
function iniziaGioco() {
console.log('Il gioco è iniziato!')
inizializzaConsole();
aggiornaConsoleVite();
gestisciTurni();
mostraCarte();
aggiornaCarte();
}
function gestisciTurni() {
const giocatoreCorrente = giocatori[turnoCorrente % giocatori.length];
if (giocatoreCorrente.vite === 0) {
turnoCorrente = (turnoCorrente + 1) % giocatori.length;
setTimeout(() => {
gestisciTurni();
}, 2000);
return;
}
if (turnoCorrente === 0) {
mostraPulsantiUtente();
} else {
nascondiPulsantiUtente();
eseguiTurnoCPU();
}
if (turnoCorrente === iMazziere) {
eseguiTurnoMazziere();
}
turnoCorrente = (turnoCorrente + 1) % giocatori.length;
}
mano
作为 function creaGiocatore
对象的一部分返回。它不是 creaGiocatore
的财产。为了能够使用它,您需要调用该函数,如下所示:let result = creaGiocatore("some nome")
。然后你可以这样做:result.mano[0] ...
。
这是一个例子:
function creaGiocatore(nome) {
return {
nome: nome,
vite: 3,
mano: [1,2,3]
};
}
// You have to invoke the function to recieve its return value
let result = creaGiocatore("foo");
// Then you can use the return value
console.log(result.mano);