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

cbd*_*per 3 javascript conditional function

有没有办法return三元运算符内部执行语句?

这是一件奇怪的事情,因为我觉得三元组就像if/else的简写,你可以returnif/else 中执行语句。

但出于某种原因,我无法return三元运算符中执行语句:

常规 IF/ELSE:

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

三元作为 IF/ELSE:

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

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

带返回的常规 IF/ELSE:

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

三元作为 IF/ELSE 并返回:

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

关于可能的重复:

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

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

function foo() {
  return(
    true ?
      console.log('This is true')
    : null
  );
}
Run Code Online (Sandbox Code Playgroud)

Mah*_*Ali 5

不,这是不可能的。三元运算符的操作数是表达式。并且return是一个声明。你应该使用if else. 根据MDN

参数

条件
其值用作条件的表达式。

exprT, exprF
具有任何类型值的表达式。