重构javascript if语句

时间:2017-11-15 15:41:46

标签: javascript

我有一个不寻常的嵌套if语句,执行某些代码需要第三个条件,但这个条件与我的else子句无关。因此,我在外部2个条件中嵌套了这个条件。下面的工作原理应该如此,但我不肯定这是处理这种情况的最好方法。我应该使用另一种方法,还是以一种我没想过的方式重构它?

if ($('#preferred-contact').prop('selectedIndex') == index && !$(selector).val())
{
    if (!$(label).parent().hasClass('has-error')) {
        $(selector).after("<span class='help-block form-error'>Required Field</span>");
        $(label).parent().addClass('has-error');
    }
}
else {
    $(selector + ' + .help-block').remove();
    $(label).parent().removeClass('has-error');
}

2 个答案:

答案 0 :(得分:2)

您的第一个delete[]语句有第二个if语句,但不包含其他代码。

为什么只为此创建一个条件?

if

通过它,您可以减少 cyclomatic complexity 并改进代码。在每种语言中,您都应该使用最低级别的嵌套进行编码。

答案 1 :(得分:-1)

如果你好的话,你使用条件的方式。但是,如果你坚持摆脱内在条件,你可以从后面重写它并使用else if

if ($('#preferred-contact').prop('selectedIndex') != index || $(selector).val())
{
    $(selector + ' + .help-block').remove();
    $(label).parent().removeClass('has-error');
}
else if (!$(label).parent().hasClass('has-error')) {
    $(selector).after("<span class='help-block form-error'>Required Field</span>");
    $(label).parent().addClass('has-error');
}