Return 三元运算符表达式中的 JavaScript 语句

Return statement inside JavaScript ternary operator expression

问题

有没有办法在三元运算符中执行return语句?

这是一件奇怪的事情,因为我觉得 三进制 就像 shorthand 对 if/else,你可以在 if/else.

中执行 return 语句

但出于某种原因,我无法在 三元运算符:

中执行 return 语句

常规 IF/ELSE:

// THIS WORKS
function foo() {
  if (true) {
    console.log('This is true');
  } else {
    console.log('Not true');
  }
}

三元为 IF/ELSE:

// THIS ALSO WORKS
function bar() {
  true ? 
    console.log('This is true')
  : console.log('Not true');
}

上面的两个代码都可以正常工作。但是当涉及 return 时,会发生以下情况:

常规 IF/ELSE 与 return:

// THIS WORKS
function foo() {
  if (true) {
    console.log('This is true');
  } else {
    return;
  }
}

三元组 IF/ELSE 与 return:

// THIS DOESN'T WORK
function bar() {
  true ? 
    console.log('This is true')
  : return;
}

关于可能的重复:

我环顾四周,没有找到这个确切问题的答案。

我很清楚我可以return一个三元运算符,就像下面的一段代码,但这不是这个问题的问题。

function foo() {
  return(
    true ?
      console.log('This is true')
    : null
  );
}

不,这不可能。三元运算符的操作数是expressions. And return is a statement. You should use if else. According to MDN

Parameters

condition
An expression whose value is used as a condition.

exprT, exprF
Expressions with values of any type.

不可能 - 三元运算符需要表达式,而 return 是一个语句。使用简单的 if 语句:

function foo() {
    if (true) console.log("This is true"):
    else return;
}