为何无法在三元运算符分支中使用continue关键字?
三元运算符与continue的兼容性问题解析
核心原因:三元运算符只接受表达式作为分支
三元运算符的语法规则是 条件 ? 表达式1 : 表达式2,这里的两个分支必须是能产生返回值的表达式。而continue是循环控制语句,它的作用是跳过当前循环迭代,本身不返回任何值,也不属于表达式范畴——把语句塞进三元运算符的分支里,直接违反语法规则,所以代码无法运行。
反观能正常运行的代码,console.log(\Do nothing.`)`是函数调用表达式,哪怕它没有实际有用的返回值,也符合三元运算符对分支的语法要求,因此可以正常执行。
额外逻辑误区:条件表达式写法错误
你写的whichLibrary == undefined || ""逻辑并不正确,它的运算顺序是先判断whichLibrary == undefined,如果结果为false,就会取""作为整个条件的结果,而""是布尔假值,所以这个条件等价于只判断whichLibrary == undefined,完全没实现“判断空字符串”的意图。正确的写法应该是:
whichLibrary == undefined || whichLibrary == ""
或者更严谨的全等判断:
whichLibrary === undefined || whichLibrary === ""
正确实现需求的写法
如果要实现“满足条件就赋值,不满足就跳过当前循环”的逻辑,不能用三元运算符,直接用if-else语句更清晰也符合语法:
if (whichLibrary === undefined || whichLibrary === "") { whichLibrary = bookData; } else { continue; }
内容的提问来源于stack exchange,提问作者user18206695
相关产品推荐
相关产品推荐

