关于JS嵌套if语句的更好解决方案

时间:2014-04-16 15:24:18

标签: javascript jquery if-statement

让我们说我的html中有3个div。 Id是:

  • 的StepOne
  • steptwo
  • stepthree

我想首先在stepone div上加载来自服务器json的数据,如果返回的是' 1'然后在stepone div上打印好。

然后在steptwo div上加载数据,数据也是json。所以基本上这是一个过程,以下是我的代码:

$(document).ready(function(){
    var loadingone = $.post("stepone.php");
        .done(function(dataone){
        objone = JSON && JSON.parse(dataone) || $.parseJSON(dataone);   //get json return from server
        if (objone.status == "1") {
            $("#stepone").html("good");
            var loadingtwo = $.post("steptwo.php")
                .done(function(datatwo){
                    objtwo = JSON && JSON.parse(datatwo) || $.parseJSON(datatwo);
                    if (objtwo.status == "1"){
                        $("#steptwo").html("good");
                    }
                    else
                    {
                        $("#steptwo").html("bad");
                    }
                });
        }
        else
        {
            $("#stepone").html("message" + objone.codeurl);
        }
    });
});

因为您可以看到代码包含嵌套的if语句,并且它看起来不是很清楚。我想知道是否有更好的解决方案吗?谢谢 === UPDATA === 这是我编辑后的代码,是不是?

var loadingone = $.post("stepone.php");
    .done(function(dataone){
    objone = JSON && JSON.parse(dataone) || $.parseJSON(dataone);

    if (objone.status != "1"){
        $("#stepone").html("bad" + objone.codeurl")
    }
    else{
        $("#stepone").html("good");
        var loadingtwo = $.post("steptwo.php");
            .done(function(datatwo){
                objtwo = JSON && JSON.parse(datatwo) || $.parseJSON(datatwo);
                if (objtwo.status != "1"){
                    $("#steptwo").html("bad");
                }
                else
                {
                    $("#steptwo").html("good");
                }
            }
    }

1 个答案:

答案 0 :(得分:3)

否定你的表达。

而不是遵循以下模式:

if A {
    if B {
        if C {
            do stuff
        }
        else error C
    }
    else error B
}
else error A

试试这个:

if !A {
    error A
    return
}
if !B {
    error B
    return
}
if !C {
    error C
    return
}
do stuff

这样,您可以将错误与各自的条件保持一致,并避免深度嵌套。