Javascript 三元?:操作员抛出一个错误
我可以问一下为什么下面的代码返回错误吗 错误: 我已经做了我能想到的一切,我正试图使用这种格式的Javascript 三元?:操作员抛出一个错误,javascript,if-statement,Javascript,If Statement,我可以问一下为什么下面的代码返回错误吗 错误: 我已经做了我能想到的一切,我正试图使用这种格式的if/else而不是普通的if(){},这样我就可以掌握语言的各个方面 代码: 函数大于(numberOne,numberTwo){ numberOne>numberTwo?返回true:返回false; } 谢谢你能提供的任何帮助 您误解了三元运算符。事实上,你根本不需要在那里使用它,只要 return numberOne>numberTwo; 如果您仍然想知道您的三元运算符有什么问题,下
if/else
而不是普通的if(){}
,这样我就可以掌握语言的各个方面
代码:
函数大于(numberOne,numberTwo){
numberOne>numberTwo?返回true:返回false;
}
谢谢你能提供的任何帮助 您误解了三元运算符。事实上,你根本不需要在那里使用它,只要
return numberOne>numberTwo;
如果您仍然想知道您的三元运算符有什么问题,下面是使用三元运算符的方法。在这里,它将使用相同的技巧,但使用更多的字符(即,这里不需要使用它,但这里有一个示例)
如果我不清楚-这些返回语句中的两个都将执行完全相同的操作
扩展一下主题-为什么它不能像我使用它的方式工作呢 三元运算符本身应该返回结果(不要与函数的返回混淆)。它通过计算第一个表达式(在
?
之后和:
之前)或第二个表达式(在:
之后)返回结果。为了让三元运算符返回任何内容,两个表达式的计算结果都必须为任何内容。将return
语句作为三元运算符内的表达式之一是没有意义的,因为return
关键字的计算结果没有任何意义。也就是说,写下以下内容是毫无意义的:
var lalala = return someVar;
这就是错误试图告诉你的,它是同一来源的错误。也就是说,它期望的不是返回
,而是某个变量+另一个变量
,1*2
,great>small
或任何其他可以评估的内容
推荐阅读:您误解了三元运算符。事实上,你根本不需要在那里使用它,只要
return numberOne>numberTwo;
如果您仍然想知道您的三元运算符有什么问题,下面是使用三元运算符的方法。在这里,它将使用相同的技巧,但使用更多的字符(即,这里不需要使用它,但这里有一个示例)
如果我不清楚-这些返回语句中的两个都将执行完全相同的操作
扩展一下主题-为什么它不能像我使用它的方式工作呢 三元运算符本身应该返回结果(不要与函数的返回混淆)。它通过计算第一个表达式(在
?
之后和:
之前)或第二个表达式(在:
之后)返回结果。为了让三元运算符返回任何内容,两个表达式的计算结果都必须为任何内容。将return
语句作为三元运算符内的表达式之一是没有意义的,因为return
关键字的计算结果没有任何意义。也就是说,写下以下内容是毫无意义的:
var lalala = return someVar;
这就是错误试图告诉你的,它是同一来源的错误。也就是说,它期望的不是返回
,而是某个变量+另一个变量
,1*2
,great>small
或任何其他可以评估的内容
推荐阅读:您要找的是一个普通的
旧的if
语句:
if(numberOne > numberTwo) {
return true;
} else {
return false;
}
如果
语句分支语句,则会导致一个。而return
是一条语句。三元表达式,true
和false
是表达式,return
不是。因此,只需将return
移动到三元代码前面:
return numberOne > numberTwo ? true : false;
这基本上是:
return numberOne > numberTwo;
您要查找的是一个普通的if
语句:
if(numberOne > numberTwo) {
return true;
} else {
return false;
}
如果
语句分支语句,则会导致一个。而return
是一条语句。三元表达式,true
和false
是表达式,return
不是。因此,只需将return
移动到三元代码前面:
return numberOne > numberTwo ? true : false;
这基本上是:
return numberOne > numberTwo;
所以“?:”操作符返回它自己的东西,所以你不应该写“返回你自己”这样做
-函数大于(numberOne,numberTwo){
返回numberOne>numberTwo?真:假
}所以“?:”操作符返回了它自己的东西,所以你不应该写“返回你自己”这样做
-函数大于(numberOne,numberTwo){
返回numberOne>numberTwo?真:假
}我没有试图返回该值,我只是试图返回是否大于布尔值value@Death这正是我的代码所做的numberOne>numberTwo
返回布尔值。这解决了问题,但没有解决在三元表达式中使用return
时出错的问题。答案是return
是一个语句而不是一个表达式(它不会计算任何值,例如console.log(return'foo');
是没有意义的,因为return'foo'
不会计算任何可以记录的值),所以它不能用于需要表达式的地方。@Paulpro这是一个合理的注释,我要补充的是,我并没有试图返回值,我只是试图返回是否大于布尔值value@Death这正是我的代码所做的numberOne>numberTwo
返回布尔值。这解决了问题,但没有解决在三元表达式中使用return
时出错的问题。答案是return
是一个语句而不是一个表达式(它不会计算任何值,例如console.log(return'foo');
没有意义,因为return'foo'
不会计算任何值