三元? :运算符抛出错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三元? :运算符抛出错误相关的知识,希望对你有一定的参考价值。
请问以下代码为什么会返回错误?
错误:
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;
}
感谢您提供任何帮助!
你误解了三元运算符。事实上,你根本就不必在那里使用它
return numberOne>numberTwo;
如果您仍然想知道您的三元运算符有什么问题,那么您将如何通过三元运算符获得它。它会在这里做同样的技巧,但更多的字符(即,不需要在这里使用它,但无论如何这里是一个例子)
return (numberOne > numberTwo ? true : false);
如果我不清楚 - 那些退货声明将完全相同的事情。
对主题进行了扩展 - 为什么它不能像我使用它那样工作?
三元运算符本身应该返回结果(不要与函数的返回混淆)。它通过评估第一个表达式(在?
之后和:
之前)或第二个表达式(在:
之后)来返回结果。为了使三元运算符返回任何内容,两个表达式都必须求值。将return
语句作为三元运算符中的表达式之一是没有意义的,因为return
关键字不评估任何内容。即,写下以下内容毫无意义:
var lalala = return someVar;
这就是错误试图告诉你的,这是同一起源的错误。即,它预计不是return
,但可能是someVar + anotherVar
,1 * 2
,great > small
或其他任何可以评估的东西。
推荐阅读:How do you use the ? : (conditional) operator in JavaScript?
您正在寻找的是一个简单的旧if
声明:
if(numberOne > numberTwo) {
return true;
} else {
return false;
}
导致if
语句分支语句。而return
是一个声明。然而三元组分支表达式,true
和false
是表达式,而return
则不是。因此,只需在三元组前面移动return
:
return numberOne > numberTwo ? true : false;
这基本上是:
return numberOne > numberTwo;
所以“?:”运算符返回它自己的东西所以你不应该写回来你自己这样做 - 函数isGreaterThan(numberOne,numberTwo){
return numberOne> numberTwo?真假;
}
以上是关于三元? :运算符抛出错误的主要内容,如果未能解决你的问题,请参考以下文章