我正在尝试学习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)'行来补偿字符串;' –