-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 の後にコード ステートメントは実行されません。if両方でfalse を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 の両方を返す必要がある場合は、変数を使用して戻り値を割り当てることができます。ここで、理解と実践のためにデモを作成しました

于 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 を押してデバッグを開始し、異なる引数で複数回呼び出していない限り、if と else の両方が実行されないことを確認する console.log ログ メッセージを取得できます。

他のブラウザーは 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 に答える