-1

if/else 逻辑都按顺序执行而没有添加 return false 但是当添加 return false 时,它​​可以正常工作,无论是 if 还是 else 被执行但它下面的代码没有执行,这是一个问题..

  var TL = {
             displayInfo: function(sectionType, fileName)
                          {
                              if(sectionType == "sectionA")
                              {
                                   sectionType = "ListA";
                                   return false; // works as normal with this line
                              }else
                              {
                                   sectionType = "ListB";
                                    return false; // works as normal with this line
                              }     
                             // additional below that is not being executed when I add the return false in the if/else logic
                          }
            };

当我删除每个 if/else 中的 return false 语句时,两个 if/else 都会执行。在我想要执行的 if/else 逻辑下方,我在此方法中有其他代码。

4

3 回答 3

1

return语句将执行到函数的末尾,并且在 return 之后不执行任何代码语句。如果您在两者中都返回 false ,if然后else将 return 语句取出 if if-else

var TL = {
         displayInfo: function(sectionType, fileName)
                      {

                          if(sectionType == "sectionA")
                          {
                               sectionType = "ListA";
                               //return false; // works as normal with this line
                          }else
                          {
                               sectionType = "ListB";
                                //return false; // works as normal with this line
                          }     
                         // additional below that is not being executed when I add the return false in the if/else logic
                      }

                      //Your code
                     return false;
        };

如果您必须从条件 if-else 中返回 false 和 true,那么您可以使用变量来分配返回值。我做了一个demo供大家理解和练习,在这里

于 2013-01-22T04:39:24.907 回答
1

我执行下面的代码,它按预期工作:

var TL = {
    displayInfo: function (sectionType, fileName) {
        if (sectionType == "sectionA") {
            console.info("inside if");
            sectionType = "ListA";
        } else {
            console.info("inside else");
            sectionType = "ListB";
        }
        console.info(sectionType);
    }
};

TL.displayInfo("sectionA");

代码进入 if 块,最后一个控制台日志按预期打印“ListA”。我不确定这个问题。JSFiddle 在:http: //jsfiddle.net/poonia/eq9u3/1/

于 2013-01-22T04:51:42.903 回答
0

该错误可能在您的代码中的其他地方,我猜您创建了 displayInfo 的实例。

如果您使用的是 IE,您可以按 F12,开始调试并获得 console.log 日志消息,证明 if 和 else 不会同时执行,除非您使用不同的参数多次调用它。

任何其他浏览器都应该支持 console.log 并且您通常可以通过按 F12 来查看控制台

var TL = {
             displayInfo: function(sectionType, fileName)
console.log("displayInfo called");
                          {
                              if(sectionType == "sectionA")
                              {
console.log("sectionType = sectionA");
                                   sectionType = "ListA";
                                   return false; // works as normal with this line
                              }else
                              {
console.log("sectionType = listB");
                                   sectionType = "ListB";
                                    return false; // works as normal with this line
                              }     
                             // additional below that is not being executed when I add the return false in the if/else logic
                          }
            };
于 2013-01-22T05:00:18.197 回答