JavaScript for循环满足条件时alert未触发问题排查
问题根因
- for循环终止条件设置为
i < 5,循环变量i初始值为0,每次循环结束后自增1,整个循环生命周期内i的取值只有0、1、2、3、4,永远到不了5,不管你用i ===5还是i >=5做判断,条件都不可能命中,这是alert不触发的核心原因。 - 循环内部额外嵌套了一层
if(i < 5)的冗余判断,退一步说就算i真的累加到5,也进不到这个判断块内部,里面的alert逻辑根本没有执行机会。 - 额外注意:
alert()方法本身没有返回值,你把它的执行结果赋值给getWinOrLose变量属于无意义操作,不影响逻辑但可以删掉。
修正方案
逻辑非常简单:for循环跑完就代表5局游戏已经全部执行完成,直接把满5局的提示放到循环外部即可,不需要在循环内部做计数判断。修正后可运行代码如下:
function game(){ for(let i = 0; i < 5; i++){ const userSelect = prompt("Choose Rock, Paper, or Scissors", ""); alert(playRound(userSelect, computerPlay())); } // 循环执行完毕即玩满5局,直接触发提示 alert("You played 5 games already"); } // 直接执行函数即可,不需要console.log包裹,原代码中game函数没有定义返回值,打印只会得到undefined game();
内容的提问来源于stack exchange,提问作者jared-dev
相关产品推荐
相关产品推荐

