我是一名新手,对于条件(三目)运算符的使用还不熟悉。请问在这个运算符中能否使用switch语句?
我尝试过以下代码:
function find(cn, romanNum) {
if (cn >= 1 && cn <= 3) {
return repeatString(romanNum[2], cn);
}
cn > 5 && cn < 9 ? return romanNum[1] + repeatString(romanNum[2], cn - 5) : switch(cn) {
case 4:
return romanNum[2] + romanNum[1];
case 5:
return romanNum[1];
case 9:
return romanNum[2] + romanNum[0];
}
}
我知道我在做错了什么,但是是什么呢?每个人在某个时候都会遇到新的东西。
错误:
- 期望一个标识符,而看到的是
'return'
。 - 期望
':'
,而看到的是'romanNum'
。 - 缺少分号。
- 期望
'}'
与第58行的'{'
匹配,而看到的是':'
。
这是正确的es5代码:
function find(cn, romanNum) {
if (cn >= 1 && cn <= 3) {
return repeatString(romanNum[2], cn);
} else if (cn == 4) {
return romanNum[2] + romanNum[1];
} else if (cn == 5) {
return romanNum[1];
} else if (cn == 9) {
return romanNum[2] + romanNum[0];
}
if (cn > 5 && cn < 9) {
return romanNum[1] + repeatString(romanNum[2], cn - 5);
}
}
Help?
?:
是一个运算符,它的操作数必须是表达式,但switch
是一个语句,而不是表达式。(return
同理。)你可能希望参考 https://github.com/tc39/proposal-pattern-matching? - Ry-