三元? :运算符抛出错误

问题描述 投票:2回答:3

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

错误:

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;
}

感谢您提供任何帮助!

javascript if-statement
3个回答
5
投票

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

return numberOne>numberTwo;

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

return (numberOne > numberTwo ? true : false);

如果我不清楚 - 那些退货声明将完全相同的事情。


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

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

var lalala = return someVar;

这就是错误试图告诉你的,这是同一起源的错误。即,它预计不是return,但可能是someVar + anotherVar1 * 2great > small或其他任何可以评估的东西。

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


1
投票

您正在寻找的是一个简单的旧if声明:

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

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

return numberOne > numberTwo ? true : false;

这基本上是:

return numberOne > numberTwo;

0
投票

所以“?:”运算符返回它自己的东西所以你不应该写回来你自己这样做 - 函数isGreaterThan(numberOne,numberTwo){

return numberOne> numberTwo?真假;

}

© www.soinside.com 2019 - 2024. All rights reserved.