【问题标题】:Conditionally return or break a switch case有条件地返回或打破开关盒
【发布时间】:2023-01-09 16:34:24
【问题描述】:

我正在重构一个 switch 语句,其中我在其中一种情况下执行 if 条件,其中 ifbreak 切换情况,而 elsereturn

是否可以将其作为更快的条件执行,例如三元或其他条件,而不是标准的 if/else?

原版的

let someCondition;

// someCondition is set at some point

switch(toSwitchOn) {
    case myCase:
        if (someCondition) {
           sendObj({someKey: 'someVal', condition: true});
           break;
        } else {
           sendObj({condition: false});
           return false;           
        }
}

到目前为止重构

let someCondition;

// someCondition is set at some point

switch(toSwitchOn) {
    case myCase:
        sendObj({
           ...!!someCondition && {someKey: 'someVal'},
           condition: !!someCondition
        });
     
        if (someCondition) { break; } else {return false}
}

【问题讨论】:

  • switch只有一个case有什么意义?那应该只是if
  • 如果它变得更加混乱,那么创建更简洁的代码就没有额外的意义了。原始代码比重构后的版本更具可读性。
  • @Barmar 说的(re switch 和一个 case)。还有:第一个版本有什么问题?它清晰,易于阅读,易于调试,...

标签: javascript switch-statement return break


【解决方案1】:

你可以这样做

let someCondition;

// someCondition is set at some point

switch(true) {
    case someCondition:
         sendObj({someKey: 'someVal', condition: true});
         break;
    default:
         sendObj({condition: false});
         return false;           
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多