为什么JavaScript中while循环条件满足时仍意外停止运行?
问题原因
你的循环意外停止的核心原因是缺少对非指定命令输入的分支处理,具体逻辑问题如下:
- 只有当用户输入
new或list时,你的代码才会调用prompt重新获取用户输入,更新want变量的值 - 当用户输入
quit之外的其他内容时,代码既不会进入if(want==="new")分支,也不会进入else if(want==="list")分支,循环体内没有任何执行逻辑,也不会更新want的值 - 此时
want的值一直是用户输入的非指定内容,始终满足while(want!=="quit")的循环条件,代码进入空转死循环,浏览器检测到脚本无响应后就会自动终止运行,表现就是程序意外关闭
修复方案
你只需要在两个判断分支后新增一个else分支,处理非法输入的情况,在该分支内重新获取用户输入即可,修改后的代码如下:
let want = prompt("What Do You Want To Do?"); let list = []; let listItem = ""; while (want !== "quit") { if (want === "new") { listItem = prompt("Enter A Task You Want To Add"); console.log(`${listItem} added to your todo list.`); list.push(listItem); want = prompt("What Do You Want To Do?"); } else if (want === "list") { console.log("*******"); for (let i = 0; i < list.length; i++) { console.log(list[i]); } console.log("*******"); want = prompt("What Do You Want To Do?"); } else { // 处理非法输入 alert("请输入有效命令:new/list/quit"); want = prompt("What Do You Want To Do?"); } } console.log("Okay You Quit");
内容的提问来源于stack exchange,提问作者Adarsh Dubey
相关产品推荐
相关产品推荐

