• ベストアンサー

functionから抜けることができません、強制終了したいです。

function A(xxx) { B(xxx); C(xxx); } function B(xxx) { if (xxx == "yyy") {ここでBから抜けてさらにAも抜けたい。} return(xxx); } こんな時どうすればいいのでしょうか? javascriptですとexitはありませんしquitもありません。 breakも違うようです…スクリプトの強制終了はどうすれば良いのでしょうか。

noname#19884
noname#19884

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

もうひとつやりたいことがわからないですけど、 やっていることは、#1とほとんど同じですけど try~catchで A("yyy"); function A(xxx) { try{ B(xxx); C(xxx); } catch(e){ //alert(e); } } function B(xxx) { if (xxx == "yyy") { throw "exit" } return(xxx); } のようには書けます。

noname#19884
質問者

お礼

やりたいことこれです~。 throw で強制終了できるのですね~ A("xxx"); function A(xxx) { try{ B(xxx); alert('A'); C(xxx); } catch(e){ alert(e); } } function B(xxx) { xxx = C(xxx); xxx = C(xxx); alert('B'); } function C(xxx) { if (xxx == "yyy") { err("xxx = yyy exit") } if (xxx == "zzz") { err("xxx = zzz exit") } alert('C'); return 'zzz'; } function err(s) {throw s;} A("xxx");の場合 alert('C'); alert('xxx = zzz exit'); A("yyy");の場合 alert('xxx = yyy exit'); と動作して alert('A');も alert('B');も実行されませんでした。 ばっちりです、非常に参考になりました。 ご回答ありがとうございました。

その他の回答 (2)

回答No.2

なんとなく気持ちはわかるが・・・、 普通にBの結果を参照(別にreturnじゃなくても、グローバル変数にフラグを持たせるとか・・・)して、C実行前に判定するのが普通なのでは? 逆に、それによって、 >>function Bを再利用したいので ができない理由がわからない・・・。 (^^ゞ

noname#19884
質問者

補足

スマートじゃなくて嫌です。 判定だらけでソースコードがナポリタンになってしまいます。

回答No.1

??? function B(xxx) { if (xxx == "yyy") {ここでBから抜けてさらにAも抜けたい。} return false; } function A(xxx) { if(B(xxx)){ C(xxx); } } とかなんとか・・・。 (^^ゞ

noname#19884
質問者

お礼

やっぱりそうなのですかね~ function Bを再利用したいので、できればfunction B内で終了したいのですが… function B(xxx) { if (xxx == "yyy") {goto label1} return false; } function A(xxx) { B(xxx); C(xxx); label1: } とかできればいいのですが…できませんし やっぱりjavascriptで補制御の再利用性求めちゃダメって事でしょうか…

関連するQ&A

  • AタグでFunctionを実行

    xxx.jsというJavaScript1ファイルのyyy()というFunctionを、Aタグで実行させたくて、 <SCRIPT LANGUAGE="JavaScript" SRC="xxx.js"></SCRIPT> <A Href="JavaScript:yyy(document.all.id,document.all.name);">取込</A> と書いたんですが、オブジェクトがありません。というエラーが出てしまいます。 記述が間違っているんでしょうか?

    • ベストアンサー
    • HTML
  • functionに括弧を使用するとエラー

    Parse error: parse error, expecting `')'' in C:\XXX.php on line XX というエラーが発生します。 クラスのfunctionの引数に他のクラスを呼び出すとエラーになります。 class XXX { function XXX_XXX( $dmy = YYY:YYY_YYY() )  //ここがエラー発生行 { ・・・・・ } } class YYY { function YYY_YYY() { return 1; } } この方法は無理でしょうか? どうにかクラスを呼び出す方法が御座いましたらご教授願います。

    • ベストアンサー
    • PHP
  • Aタグでサブミットさせない方法

    以下のようにjavascriptでサブミットを制御したい場合、 return falseとしてもサブミットしてしまいます。 Aタグにおいてサブミットさせないためには どうすればよいのでしょうか。よろしくお願いします。 <a href="xxx/yyy" onclick="func();"> function func(){ var ret = confirm("xxxxxxxxx"); if(ret == false) { return false; } }

  • functionから別のfunctionを実行したい

    よろしくお願いします 今JavaScriptで function a(){ 処理A } function b(){ 処理B } function c(){ 処理C 処理Aをして終わり } と言うことをしたいのですが function a と同じコードをcに書くのが大変なので function cからaを呼び出して実行することができないかと考えています 検索も色々してみたのですが これと言った答えがなかったので質問しました よろしくお願いします。

  • VB6,Ifから抜けるには?

    If a = b then   xxx  If c = d then    ここ!  End If   yyy End If zzz 上のここ!から抜け、zzz以降の処理を継続するにはどうすればよいでしょうか? Exit Subをやってしまうとプロシージャ自体から抜けてしまいます。

  • awkないでスクリプトを終了させるには?

    cshで書いています。 awk内でスクリプトを終了させることはできませんか? exitと書くとawk終了となるのでその後のスクリプト内容がはしってしまいます。 どうしたらいいのでしょうか。 どなたかおしえてください。 awk '{ xxx exit }' こんなかんじです。

  • Javaの強制終了するコード

    Javaのテスト勉強をしております。 つきましては教えていただきたいことがございます。 入力値に問題があったらプログラムを強制終了させるコードとしてテキスト中では 問題によってreturn()となっていたりSystem.exit()となっていたりします。 この二つは何が違うのでしょうか。 ご回答くださいますようお願いします。

    • ベストアンサー
    • Java
  • ループ途中に強制終了

    int main() { while(1){ 繰り返し処理} return 0; } この場合、ブレークを記入しない限り止まらないですね。 止まらない中でEnterキーを押せばループから抜け出して強制終了させるようなコマンドはありますか? 初心者なので丁寧に教えていただければ幸いです。

  • functionの値を別のfunction へ

    set_hidukeで取得した「true」を hiduke_chkにもっていく方法を教えていただけないでしょうか。 <SCRIPT language=JavaScript> function set_hiduke(){ var hiduke_input = true } function hiduke_chk(){ if(hiduke_input==true) alert("日付をいじった?") } </SCRIPT> <FORM NAME=main ACTION="★" METHOD="POST" onSubmit="return hiduke_chk()"> <INPUT TYPE="TEXT" NAME="年月日" SIZE="12" onBlur="set_hiduke();"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

  • ユークリッドの互除法

    ユークリッドの互除法をJavascriptで書こうとしてます。以下のように書いたのですが、うまく動きません。(45と60の最大公約数を求めるプログラム) <script> window.alert(gcd(45, 60)); function gcd(a, b){ var r=a%b; if(r==0){ return b; }else{ gcd(b, r); } } </script> undifinedとなってしまいます。どうしたら正確な答えが出るでしょうか?