Javascript 如何将变量设置为从提示符(';…';)返回的值?

Javascript 如何将变量设置为从提示符(';…';)返回的值?,javascript,variables,user-input,Javascript,Variables,User Input,在下面的代码中,当我将userDoor变量设置为提示用户输入时,用户输入将附加到该变量。我之所以知道这一点,是因为该值显示在变量声明下方的console.log语句中 然而,基于userInput变量设置的变量revealDoor和offerDoor行为不稳定,表明变量没有“捕获”值。(不可靠的:演示容易解释难。请运行下面的代码。UserDoor、revealDoor和offerDoor都应该是1-3范围内的不同数字。有时,revealDoor==UserDoor。这种情况永远不会发生。) 有趣

在下面的代码中,当我将userDoor变量设置为提示用户输入时,用户输入将附加到该变量。我之所以知道这一点,是因为该值显示在变量声明下方的console.log语句中

然而,基于userInput变量设置的变量revealDoor和offerDoor行为不稳定,表明变量没有“捕获”值。(不可靠的:演示容易解释难。请运行下面的代码。UserDoor、revealDoor和offerDoor都应该是1-3范围内的不同数字。有时,revealDoor==UserDoor。这种情况永远不会发生。)

有趣的是,当我将userDoor直接设置为整数时,程序运行良好——请参见注释调试行

为什么userInput变量会在控制台中显示正确的值,但在程序的其余部分中似乎没有捕获

(顺便说一句,这个节目旨在说明

alert(“有三扇门,其中两扇门后面是死亡和厄运,另一扇门后面是一条美味的大香肠”);
var-yWin=0;
var-yLoss=0;
var-nWin=0;
var-nLoss=0;
while(true){//noprotect
var userDoor=prompt(“选择门:1、2或3”);
//var userDoor=1//调试
console.log('UD:'+userDoor);
var prizeDoor=随机范围(1,3);
控制台日志('PD:'+prizeDoor);
var revealdor=(函数(){
var Revealdor=prizeDoor;
如果(prizeDoor==用户门){
while(revealDoor==prizeDoor){
Revealdor=随机范围(1,3);
}
返回探测仪;
}
否则{
while(revealdor==prizeDoor | | revealdor==userDoor){
Revealdor=随机范围(1,3);
}
返回探测仪;
}
})();
console.log('RD:'+revealdor);
var offerDoor=(函数(){
var offerDoor=prizeDoor;
while(offerDoor==revealDoor | | offerDoor==userDoor){
报价门=随机范围(1,3);
}
还盘门;
})();
console.log('OD:'+offerDoor);
var choice=prompt(“您选择了门”+userDoor+”。门后“+revealDoor+”,我揭示了死亡和厄运。我想给您一个机会将您的选择更改为“+offerDoor+”。您是否接受--y/n?”);
如果(选项==“y”){
用户门=报价门;
}
var result=(函数(){
var结果;
if(userDoor==prizeDoor){
警惕(“你找到了奖品!”);
结果='w';
}
否则{
警惕(“你选择了死亡和厄运!”);
结果='l';
}
返回结果;
})();
//分析:
开关(结果){
案例“w”:
如果(选项=='y'){
yWin++;
}
否则{
nWin++;
}
打破
案例“l”:
如果(选项=='y'){
LOSS++;
}
否则{
nLoss++;
}
打破
}
var done=提示(“您完成了吗?是/否”);
如果(完成==“y”){
打破
}
}
函数随机范围(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+1;
}
var totalSamples=yWin+nWin+yLoss+nLoss;
var yChoices=yWin+yLoss;
变量nChoices=nWin+nLoss;
log('带有'+totalSamples'的样本集);
log('您选择更改时间的'+(yChoices/nChoices*100)+%);
log('当您选择更改时,您赢得了'+(yWin/yChoices*100)+%';
console.log('当您选择留下来时,您赢得了'+(nWin/nChoices*100)+%');
问题是prompt()返回一个字符串。这意味着任何'==='比较都返回未定义的字符串。我需要使用
number()
将返回的字符串转换为一个数字

最好使用单选按钮进行此操作

var done = confirm("Are you Done?  y/n");
if (done) break;

而不是d提示符确认

word。这是可行的,但问题是“为什么userInput变量在控制台中显示正确的值,但在程序的其余部分似乎没有捕获?”
var userDoor = prompt("choose door: 1,2,       or 3")) * 1
var done = confirm("Are you Done?  y/n");
if (done) break;