三元?:运算符抛出错误

Dea*_*ltz 1 javascript if-statement

请问以下代码为什么会返回错误?

错误:

numberOne>numberTwo ? return true : false;
                      ^^^^^^
  SyntaxError: Unexpected token return
    at createScript (vm.js:53:10)
    at Object.runInThisContext (vm.js:95:10)
    at Module._compile (module.js:543:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.runMain (module.js:605:10)
    at run (bootstrap_node.js:427:7)
    at startup (bootstrap_node.js:151:9)``
Run Code Online (Sandbox Code Playgroud)

我已经完成了我能想到的一切,并且我正在尝试使用这种格式if/else而不是正常格式,if () {}这样我就可以掌握语言的所有方面.

码:

function isGreaterThan(numberOne, numberTwo) {
    numberOne>numberTwo ? return true : return false;
}
Run Code Online (Sandbox Code Playgroud)

感谢您提供任何帮助!

nic*_*ael 5

你误解了三元运算符.事实上,你根本就不必在那里使用它

return numberOne>numberTwo;
Run Code Online (Sandbox Code Playgroud)

如果您仍然想知道您的三元运算符有什么问题,那么您将如何通过三元运算符获得它.它会在这里做同样的技巧,但更多的字符(即,不需要在这里使用它,但无论如何这里是一个例子)

return (numberOne > numberTwo ? true : false);
Run Code Online (Sandbox Code Playgroud)

如果我一直不清楚- BOTH那些return语句会做EXACTLY同样的事情.


对主题进行了扩展 - 为什么它不能像我使用它那样工作

三元运算符本身应该返回结果(不要与函数的返回混淆).它通过计算第一个表达式(?之前和之后:)或第二个表达式(后面的表达式)来返回结果:.为了使三元运算符返回任何内容,两个表达式都必须求值.将return语句作为三元运算符中的表达式之一是没有意义的,因为return关键字不会评估任何内容.即,写下以下内容毫无意义:

var lalala = return someVar;
Run Code Online (Sandbox Code Playgroud)

这就是错误试图告诉你的,这是同一起源的错误.也就是说,它没有预期return,但也许someVar + anotherVar,1 * 2,great > small或其他任何可评估.

推荐阅读: 你如何使用?:JavaScript中的(条件)运算符?

  • 这解决了问题,但没有解决为什么在三元表达式中使用“return”是错误的问题。答案是 `return` 是一个语句而不是表达式(它不会计算任何内容,例如。`console.log( return 'foo' );` 是没有意义的,因为 `return 'foo'` 不会计算为您可以记录的任何内容),因此不能在需要表达式的地方使用它。 (2认同)