[英]Passing a function as an argument doesn't work
我正在制作一個紙牌游戲,您嘗試將其配對成4對,每局玩家詢問另一位玩家是否具有一定的卡牌價值,如果擁有,則應將所有該值的卡牌交給該玩家問。
在askPlayer()函數中,我提示查看哪個玩家應該收到該問題。 然后我返回任何輸入。
function askPlayer() {
var askedPlayer = prompt('Which player do you want to ask?');
return askedPlayer;
}
在askCard()函數中,我將返回的任何askPlayer()都用在askCard()的提示中。
function askCard(player) {
var whichCard = prompt(player + ', all your:');
return whichCard;
}
但是,在代碼的更下方的else語句中,我調用了這兩個函數,首先使用askPlayer()返回的變量來進行AskPlayer()然后AskCard()。 這就是問題所在,當我這樣寫時,它會在提示消息中顯示整個功能代碼,而不是函數返回的內容。 但是當我像這樣添加參數時: askCard(askPlayer());
它再次調用了askPlayer。我在做什么錯? 以前一直使用這種方式,並且一直有效,所以我很困惑為什么現在不起作用。
else {
askPlayer();
askCard(askPlayer);
}
您需要調用函數,而不僅僅是引用它:
function askCard(player) {
var whichCard = prompt(player() + ', all your:');
// () here ------------------^^
return whichCard;
}
function askPlayer() { var askedPlayer = prompt('Which player do you want to ask?'); return askedPlayer; } function askCard(player) { var whichCard = prompt(player() + ', all your:'); return whichCard; } document.getElementById("btn").onclick = function () { askCard(askPlayer); };
<button id="btn">Ask</button>
您已經說過:
我調用這兩個函數,首先使用askPlayer()返回的變量來進行askPlayer()然后AskCard()。
但隨后您顯示此代碼:
askPlayer();
askCard(askPlayer);
不會這樣做。 該代碼調用askPlayer
,然后丟棄其返回值。 然后,它將調用askCard
並傳遞askPlayer
函數參考。 如果要使用askPlayer
的返回值, askPlayer
必須...使用askPlayer
的返回值:
var player = askPlayer();
askCard(player);
要么
askCard(askPlayer());
然后使用原始的askCard
,因為您的參數不是一個函數 ,而是一個字符串:
function askCard(player) {
var whichCard = prompt(player + ', all your:');
return whichCard;
}
function askPlayer() { var askedPlayer = prompt('Which player do you want to ask?'); return askedPlayer; } function askCard(player) { var whichCard = prompt(player + ', all your:'); return whichCard; } document.getElementById("btn").onclick = function () { askCard(askPlayer()); };
<button id="btn">Ask</button>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.