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

better solution about JS nesting if statement

本文关键字:更好 解决方案 语句 if JS 嵌套 关于      更新时间:2023-09-26

假设我的html中有3个div。Id为:

  • stepone
  • 第二步
  • 第三步

我想首先在steponediv上从服务器加载json数据,如果返回值为"1",则在steponediv.上打印良好

然后在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语句,它看起来不太清楚。我想知道是否有更好的解决方案?thx===更新数据===这是我编辑后的代码,对吗?

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");
                }
            }
    }

否定表达式。

而不是遵循这样的模式:

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

通过这种方式,您可以将错误保留在各自的条件下,并避免深度嵌套。