別の関数によって作成されたランダム カードが既に使用されているかどうかをチェックする単純な関数 (checkCard) を作成しようとしています。電話の発信元は次のとおりです。
var uC;
// some code including creating the random card
checkCard(card, pCards, dCards, uC);
// uC becomes unidentified here
そして、これがcheckCard自体です:
function checkCard(card, pCards, dCards, uC) {
var tCards = pCards.concat(dCards), // an array containing all cards which are in use already
i;
for (i = 0; i < tCards.length; i = i + 1) {
if (card.suit === tCards[i].suit && card.type === tCards[i].type) {
uC = true; // card is in use already
break;
} else {
uC = false; // card is not in use
}
}
// it still works here: uC is either true or false
return uC;
}
}
どういうわけかうまくいきません: checkCard は uC を正しく計算し、"return uC" の直前に値 "true" または "false" を保持します。しかし、元の関数に戻った後、uC は「未確認」になります。私は何を間違っていますか?
前もって感謝します!