我正在嘗試學習javascript,並且作爲該練習的一部分,我決定嘗試創建一個二十一點模擬器來增加我的工具和技能。來自提示的意外行爲js
下面是與程序隔離的塊。爲了簡單起見,我使用提示符而不是html界面。
function askAboutAce(){
var nResponse = 0;
var response = 0;
response = prompt("Would you like to use the ace as a 1 or 11?");
if(response === "1" || response === "11"){
nResponse = Number(response);
return nResponse;
}
else{
askAboutAce();
}
}
var x = 2 + askAboutAce();
console.log(x);
該行var x = 2 + askAboutAce();
模擬玩家先畫一個2,然後畫一個Ace。當我執行以下操作時,會出現奇怪的行爲:如果提示詢問我想如何處理ace,並且我正確響應(即使用1或11),則返回值是一個數字。但是,如果我的反應不正確(通過輸入除1或11之外的其他數字),然後最終輸入1或11,則返回值爲NaN。我發現這種行爲很奇怪,並且假設它與解決使用遞歸引起的一系列行爲有關。請幫助我瞭解意外的行爲。
提示返回一個字符串。按取消返回null。你可以使用'nResponse = Number(response)|| 0;'確保你有一個數字來做數學(尤其是加法)。 – dandavis
嘗試response = parseInt(prompt())並檢查沒有引號的情況 –
在上面的場景中,我從未按下取消。我也用'nResponse = Number(response)'行來補償字符串;' –