为何在三元运算符中直接使用return语句无法生效?
为什么你的三元运算符写法无法运行?
兄弟,你这里踩了三元运算符的一个常见坑——核心问题出在三元运算符的本质是表达式,而非流程控制语句,这是很多初学者容易混淆的点。
先拆解下你的代码:
(number % 2 == 0) ? return 1 : return 0;
根本原因:
- 三元运算符的语法是
condition ? expr1 : expr2,它要求expr1和expr2必须是能产生具体值的表达式,而不是执行性的语句。 return是一个流程控制语句,它的作用是终止函数执行并返回值,本身不能作为表达式的一部分放在三元运算符的分支里——语法上完全不允许这么做,因为三元运算符需要的是“值”,不是“执行动作”。
正确的写法应该是这样:
把三元运算符的计算结果作为 return 的参数,让三元表达式返回你需要的1或0,再由return语句把这个值返回出去:
return (number % 2 == 0) ? 1 : 0;
如果你更习惯用清晰的分支逻辑,也可以用if-else替代:
if (number % 2 == 0) { return 1; } else { return 0; }
简单总结:三元运算符是用来计算并返回值的,不是用来执行语句的——把return放在外面,让三元给它提供要返回的值就对了。
内容的提问来源于stack exchange,提问作者Alejandro Saenz
相关产品推荐
相关产品推荐

