嵌套三元表达式转嵌套if-else:哪种翻译适用及原因?
嵌套三元表达式与if-else的对应翻译
第一段:嵌套三元表达式及对应嵌套if-else
原嵌套三元表达式
let soup = "abc"; let customerBanned = false; let result = customerBanned ? "no soup" : soup ? `good ${soup} soup` : "bad soup";
对应的嵌套if-else实现
if (customerBanned) { return "no soup"; } else { if (soup) { return `good ${soup} soup`; } else { "bad soup"; } }
第二段:连续三元表达式及对应else if结构
原连续三元表达式
let myScore = 79; let myGrade = myScore > 80 ? "A" : myScore > 60 ? "B" : myScore > 50 ? "C" : "D";
对应的else if结构实现
if(myScore > 80) { return "A"; } else if(myScore > 60) { return "B"; } else if(myScore > 50) { return "C"; } else { return "D"; }
问题解答
第一段的翻译方式(嵌套if-else)适用于嵌套if-else语句,原因如下:
- 第一段的三元表达式本身是层级嵌套逻辑:外层先判断
customerBanned,当该条件不成立时,内层再嵌套判断soup的状态,这种一层套一层的结构和嵌套if-else的层级完全对应,逻辑映射清晰直接。 - 第二段的三元表达式属于平级多分支判断,所有条件都是针对同一个变量
myScore的不同区间阈值,逻辑上是并列的分支选择,用连续else if结构更符合这种平级逻辑;如果硬改成嵌套if-else,会徒增代码层级,反而降低可读性。
内容的提问来源于stack exchange,提问作者Aquarius_Girl
相关产品推荐
相关产品推荐

