能否用三元运算符终止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
相关产品推荐
相关产品推荐

