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

能否用三元运算符终止while循环?报错‘expression expected’咨询

三元运算符内使用break终止while循环的问题解决

你的写法不可行,原因很明确:JavaScript的三元运算符condition ? expr1 : expr2要求expr1和expr2必须是可求值的表达式,而break是语句,不是表达式,不能放在三元运算符的分支里,这就是你收到expression expected错误的直接原因。

替代方案

方案1:用普通if-else(最直观)

逻辑清晰,代码可读性强,完全满足你的需求:

while (true) {
  if (onderwerpenArray.includes(temp)) {
    onderwerpenArray.splice(onderwerpenArray.indexOf(temp), 1);
  } else {
    break;
  }
}

方案2:优化循环条件(最简洁)

直接把判断逻辑放到while的条件里,避免死循环+break的写法,更符合JavaScript的惯用风格:

while (onderwerpenArray.includes(temp)) {
  onderwerpenArray.splice(onderwerpenArray.indexOf(temp), 1);
}

这个写法逻辑更直接:只要数组中存在temp就删除它,直到数组里没有temp为止,代码比你原来的写法更简洁。

方案3:强行用表达式包裹break(不推荐)

如果非要追求类似三元的写法,可以把break塞进立即执行函数里当表达式,但这种写法可读性极差,完全没必要使用:

while (true) {
  onderwerpenArray.includes(temp) 
    ? onderwerpenArray.splice(onderwerpenArray.indexOf(temp), 1) 
    : (() => { break; })();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:25:24