为什么以下代码在Javascript中使用三元运算符会引发SyntaxError:
firstblock:{
a||b ? console.log(1) : (console.log(2), break firstblock);
console.log(3);
}
但以下使用if / else而不是三进制的内容不是:
firstblock:{
if(a||b) {console.log(1)} else {console.log(2); break firstblock};
console.log(3);
}
答案 0 :(得分:4)
break
不是表达式,而是语句。三元运算符用于根据条件评估表达式。您无法在三元运算符中执行语句。
根据MDN,三元运算符的语法为
条件? exprIfTrue:exprIfFalse
这里expr
表示表情。
将if-else
视为两个不同的分支,您可以在其中完成通常可以做的所有事情。您可以执行诸如return;
break
等之类的语句(不返回值的代码)。
三元运算符是一种只返回表达式(返回值的代码)的方法。在这种情况下,您只能编写表达式。
您不能使用return;
之后类似break的语句,即return break;
是无效代码,就像您不能在三元运算符中使用语句一样。