Lee*_*eed 4 javascript ecmascript-6
我对使用条件(三元)运算符真的很陌生。是否可以在该运算符中放置 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];
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我做错了什么,但那是什么呢?每个人都会在某个时间点对某些事物感到陌生。
错误:
'return'。':',反而看到了'romanNum'。'}'开始匹配'{',结果看到':'这是正确的 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);
}
}
Run Code Online (Sandbox Code Playgroud)
帮助?
tl;dr:有点,但你不应该这样做,因为它不那么可读。
始终保持代码简短、简单但冗长。
长答案: 您可以将开关包装在立即调用的匿名函数中。
const a = 20;
const condition = a > 100;
const result = condition ? true : ( () => {
switch ( a ) {
case 11: return 22;
case 20: return 21;
default: return 100;
}
} )();
console.log( result );Run Code Online (Sandbox Code Playgroud)
但这不仅更复杂,而且更难阅读。
最好使用详细的编码风格。在你的情况下,这样的东西会更干净、更具可读性:
function test( a ) {
const condition = a > 100;
if ( condition ) {
return true;
}
switch ( a ) {
case 20: return 21;
default: return 100;
}
}
console.log( test( 20 ) );Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10443 次 |
| 最近记录: |