三元? :运算符抛出错误

时间:2018-04-04 20:00:32

标签: 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)``

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

代码:

function isGreaterThan(numberOne, numberTwo) {
    numberOne>numberTwo ? return true : return false;
}

感谢您提供任何帮助!

3 个答案:

答案 0 :(得分:5)

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

return numberOne>numberTwo;

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

return (numberOne > numberTwo ? true : false);

如果我不清楚 - BOTH 这些退货声明会做完全相同的事情。

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

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

var lalala = return someVar;

这就是错误试图告诉你的,这是同一起源的错误。也就是说,它不是return,而是someVar + anotherVar1 * 2great > small或其他任何可以评估的内容。

推荐阅读: How do you use the ? : (conditional) operator in JavaScript?

答案 1 :(得分:1)

您正在寻找的是一个简单的if陈述:

if(numberOne > numberTwo) {
  return true;
} else {
  return false;
}

导致if语句分支语句return是一个陈述。然而,三元组分支表达式truefalse是表达式,return不是。因此,只需在三元组前面移动return

return numberOne > numberTwo ? true : false;

基本上就是这样:

return numberOne > numberTwo;

答案 2 :(得分:0)

所以“?:”操作员返回它自己的东西所以你不应该写回来你的自己这样做 - function isGreaterThan(numberOne,numberTwo){

return numberOne>第二 ? true:false;

}

相关问题