为什么在三元运算符内部返回会引发SyntaxError?

时间:2019-08-01 02:15:08

标签: javascript

有什么不同?以及为什么它会在函数a()中得到错误?

function a(){
    1 == 1 ? return true: "";  // Uncaught SyntaxError: Unexpected token return
}

function b(){
    1 == 1 ? console.log(true):"";  // correct
}

function c(){
    if (1==1) return true;  // correct
}

1 个答案:

答案 0 :(得分:3)

return是一个语句:它只能像<{1}}语句一样独立存在( ),并且不能被解析为值。条件运算符仅需要值(表达式)。其语法为:

if

其中cond ? expr1 : expr2 condexpr1都是表达式。如果expr2为真,则整个条件运算符的计算结果为expr1,否则为cond

同样,这是无效的:

expr2

在条件运算符1 === 1 ? if (foo) { // do something } : '' :之后放置的内容必须始终计算为一个值-也就是说,它必须是 expression < / em>。 :仅是一条语句,不能求值(就像return语句不能求值)。

另一方面,

if 表达式,其结果为console.log

如果仅在undefined中满足条件,则仅返回true,则必须使用完整的a

if

如果您想在满足条件的情况下返回function a() { if (1 == 1) { return true; } // other statements here } ,否则返回空字符串,则可以将true放在左侧并使用条件运算符:

return

需要条件创建表达式时,请使用条件运算符。如果除了创建条件表达式外还需要执行其他操作(例如,如果要满足条件则要function a() { return 1 == 1 ? true : ''; } 特定值,否则继续执行其余函数),则应使用{{1 }}。