2016-08-25 5 views
-3

入れ子の場合はどうですか?機能の途中でどのように終了するのですか?

$scope.addToCart = function() { 
    if (flagA) { 
     if (flagB) { 
      if (flagC) { 
       alert('nononono!'); 
       return; 
      } 
     } 
    } 
    someAnotherFunction(); 
}; 

私は機能を持っている:

$scope.addToCart = function() { 
    var foo = 5; 
    if (someFlag == 'Y') { 
     alert('warning!'); 
     return; 
    } 
    someAnotherFunction(); 
}; 

私はどこか

ng-click = "addToCart()" 

私の意図は

someFlag == 'Y' 
場合は、この機能を終了することで、この関数を呼び出します

その後、

someAnotherFunction(); 

を実行していない。しかし、それはまだそれを実行します。

私はこのreturnが不要なので、安全に取り外すことができます。

あなたが他のブロック内の他の関数への呼び出しを置くことができ
+1

'if(someFlag == 'Y'){'条件が失敗している必要があります。あなたは警戒していますか? – Tushar

+0

はいアラートが機能しました。 –

+1

予期しない動作は、通常、コードがグローバル変数に依存している場合に発生します。 –

答えて

0

に何が起こっているか理解するためにあなたを取る必要があります満足、しかしリターンが動作していない、あなたはまた、他にsomeAnotherFunction();を入れてみてくださいすることができます

if (someFlag == 'Y') { 
    alert('warning!'); 
    return; 
} 
else { 
    someAnotherFunction(); 
} 

someAnotherFunction()がONL実行することができますこの方法ifブロックがない場合はyです。

補遺

は、元のコードは動作するはずですし、コメントで指摘したように、これは、単なる回避策です。しかし、どちらの方法も理論的には同じ目標を達成しています。

詳細については、this question(詳細)をご覧ください。

+1

'if'はループではありません。これは良い解決策ですが、元のコードは正常に動作するはずです。 –

+0

私はブロック、ループではなく、歓声を意味しました。 – AgataB

0

:あなたがもし条件があることが確実な場合

$scope.addToCart = function() { 
    var foo = 5; 
    if (someFlag == 'Y') { 
     alert('warning!'); 
     return; 
    } else { 
     someAnotherFunction(); 
    } 

}; 

が近い

関連する問題