You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何编写正确判断语句解决OR运算符失效的循环退出问题

问题分析与修正方案

嘿,这个问题我一眼就看出症结啦——你的while循环条件逻辑搞反了!

为什么原来的代码不生效?

你用了||(逻辑或)运算符,意味着只要LastName != 'EXIT'和LastName != 'exit'这两个条件有一个成立,循环就会继续。但仔细想:

  • 如果用户输入exit,那么LastName != 'EXIT'是true,整个表达式结果为true,循环继续;
  • 如果用户输入EXIT,那么LastName != 'exit'是true,表达式结果还是true,循环还是停不下来;
  • 不管输入啥,这俩条件总有一个成立,循环永远不会终止!

修正方法

我们需要把条件改成“当LastName既不是EXIT也不是exit时,才继续循环”,这时候应该用&&(逻辑与)运算符:

方案一:使用&&修正循环条件

var FirstName = ''; 
var MiddleName = ''; 
var LastName = ''; 
var FullName = ''; 

while (LastName != 'EXIT' && LastName != 'exit') { 
  FirstName = prompt('What is your first name'); 
  MiddleName = prompt('What is your middle name'); 
  LastName = prompt('What is your last name'); 
  
  // 新增判断:只有当用户没输入退出指令时,才弹出欢迎提示
  if (LastName !== 'EXIT' && LastName !== 'exit') {
    FullName = FirstName + ' ' + MiddleName + ' ' + LastName;
    alert('Welcome, ' + FullName);
  }
}

方案二:用数组includes简化判断(更现代的写法)

如果你想让代码更简洁,可以用数组的includes方法,配合取反运算符!:

var FirstName = '';
var MiddleName = '';
var LastName = '';
var FullName = '';

// 判断LastName不在退出指令数组里时,继续循环
while (!['EXIT', 'exit'].includes(LastName)) {
  FirstName = prompt('What is your first name');
  MiddleName = prompt('What is your middle name');
  LastName = prompt('What is your last name');
  
  if (!['EXIT', 'exit'].includes(LastName)) {
    FullName = `${FirstName} ${MiddleName} ${LastName}`; // 模板字符串更易读
    alert(`Welcome, ${FullName}`);
  }
}

额外优化点

  • 建议用!==(严格不等于)代替!=,避免隐式类型转换带来的意外问题;
  • 模板字符串(${变量})比字符串拼接更清晰,是ES6+的推荐写法;
  • 新增的if判断很重要:不然用户输入exit/EXIT时,还是会弹出包含退出指令的欢迎语,体验不好。

内容的提问来源于stack exchange,提问作者Jamie Doig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:47:51