• ベストアンサー

戻り値必要なし

JavaScript初心者です。 戻り値なしの関数について。return とreturn falseでは何か違うのでしょうか? function test(){ if(flag) return; var num=1+2; } function test2(){ if(flag) return false; var num=1+2; } よろしくお願いします。

noname#191255
noname#191255

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

returnは「undefined」を返します。 なので、flagがtrueや1である時のtest()の戻り値はundefinedになります。test2()の戻り値は当然falseですね。 flagがfalseや0やundefinedの時、test()とtest2()はいずれもundefinedを返します。flagが真を意味しないのでifの中に入らず、さらにそれぞれのfunctionの最後にreturnやreturn ほげほげが無いため、returnと同義になるからです。 「で、(戻り値がundefinedかfalseか)その違いに意味はあるの?」という疑問が沸くのであれば、「その違いに意味を持たせるのはtest()やtest2()を作成したあなた」という回答になります。 つまり、プログラムは書かれた通りに動き、そこに「意味」を持たせるのは作成者の「意図」という事であり、returnとreturn falseを使い分けるのもfunctionの作り手が何らかの意図を持って行う作業(functionの設計)である、という事です。 functionはINPUT(引数)とOUTPUT(戻り値)があって、何かの処理を一まとめにしたロジックブロックです。 どのようなINPUTを受け取ってどのような処理を行ってどのような戻り値を返すかというのはfunctionを作る人が考えて決める事項であり、INPUTとOUTPUTが呼び出し側に対するインターフェースになります。そうすると呼び出し側(functionを使う人)は戻り値の種類とその意味を知っていれば安心して呼び出せますね。undefinedが戻ってきたら成功、"error"というStringが戻ってきたら失敗なんていうfunctionなんてのも世の中にはあるかも知れません。

noname#191255
質問者

お礼

ご回答ありがとうございます。 >つまり、プログラムは書かれた通りに動き、そこに「意味」を持たせるのは作成者の「意図」という事 哲学的かつ的確な回答、感動しました。 プロフィール拝見しました。 ありがとうございました

関連するQ&A

  • javascript 一回目実行

    失礼します現在一回目だけ処理したい内容があり、サンプルコードを探してみたのですが、 処理の流れがわからない状態です汗 ご教授頂けると助かります //即時関数 var trueOnlyFirstTime = (function(){ var b = true; //戻り値として関数を実行する return function(){ if(b){ b = false; return true; } return false; }; })();

  • returnの戻り値について

    以前の質問を見ていてひとつわからないことがあるのです。 内容をそのままコピーしたのですが、この場合、キーが押されたときに関数を呼び出し、 returnで戻り値が「true/false」とありますが、戻ってきたときはどこにtrue/falseが入っているのですか? <BODY> <FORM NAME="f" ACTION="UPDATE" METHOD="POST" TARGET="FRAME_D" onSubmit="return conf();"> <INPUT TYPE="TEXT" NAME="FM_KINGAKU" onKeyDown="return keyCheck(event.keyCode);" > <SCRIPT TYPE="text/javascript" SRC="./JS.SOURCE"></SCRIPT> <SCRIPT TYPE="text/javascript"> <!-- function keyCheck(keyCodes){ if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8) return true; else return false; } // --> </SCRIPT> </FORM> </BODY>

  • 下記のような関数から外部からの戻り値を返したいのですが

    下記のような関数から外部からの戻り値を返したいのですが 良い方法はございませんでしょうか? 例えば trace( test( "test" ) ); このように戻り値を返す関数にしたいです。 function test( strData:String ):String { var variables:URLVariables = new URLVariables(); variables.data = strData; var request:URLRequest = new URLRequest(); request.url = "http://test.asp"; request.data = variables; request.method = URLRequestMethod.POST; var loader = new URLLoader(); loader.addEventListener(Event.COMPLETE , function(event) { var retValue:String = new String(event.target.data); }); loader.load(request); //return ???? }

    • ベストアンサー
    • Flash
  • javascript関数の戻り値でphpの条件分岐

    こんばんは。 またまたプログラミングで詰まってしまいました・・・。 <?php    echo "<script> funcJS(); </script>"; //javascriptの関数。戻り値true/false    if(funcJS()の戻り値がtrueかどうか){       <~phpの処理~>     } ?> のようなプログラムがあったとして、funcJS()の戻り値の値によって、『phpの処理』を行うかどうかを決定したいのですがそのアルゴリズムが思いつきません。 色々と試行錯誤はやってみて、 (1)phpの変数にfuncJS()の戻り値を格納して、if文で条件分岐  $value = "<script> funcJS(); </script>";   しかし、これは$valueに戻り値を入れることができませんでした。 (2)javascript変数に戻り値を格納して、javascript内のif文で条件分岐 <?php    echo "<script> var value=funcJS(); </script>"; //javascriptの関数。戻り値true/false    echo "<script> if(value == 'true'){ </script>";       <~phpの処理~>    echo "<script> } </script>"; ?>  これも"}"がないと怒られてしまいました。 自分で思いつく限りは試してみたのですが、他に方法が思い浮かばず頭を抱えている状態です。 何か良い方法を知っている方、思いついた方、よろしくお願いします。

  • チェックボックスの選択チェック

    ラジオボタンの選択チェック、セレクトボタンの選択チェックのあとにチェックボックスの選択チェックをしたいのですが、どのように入れればよいのでしょうか。教えてください。 ↓参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++) if(document.form1.seibetu[i].checked)flag=false; } if(flag){ alert('性別が選択されていません'); return false; } if(document.form1.nenrei.value=="")flag=true; if(flag){ alert('年齢が選択されていません'); return false; } if( document.form1.Q1.length){ flag=1; var i; for(var i=0; i<document.form1.Q1.length; i++) if(document.form1.Q1[i].checked)flag=false; if(flag){ alert('Q1が選択されていません'); return false; } else {★★★ここに入れたい★★★   ;} } }

  • phpコードの戻り値をhtmlファイルに入れるには

    こんばんは。 質問は.htmlファイルからphp関数を直接呼べるか否か、 呼べないとしたら.cgiなどを利用すればよい? 引数なしのphp関数の戻り値を.htmlの一部に出力させるにはどうしたら よいかです。 phpで作成したfunction fnc_test(){return "aaa";}の値を aaa.html内に出力させたいのです。 aaa.phpファイルにだったらecho fnc_test();で表示されると思うのですが、 aaa.htmlに<body>fuc_test();</body>とやってももちろんphpが起動せず、表示されませんよね。 同じ事をさせたいときにaaa.htmlを新しく作成すれば(phpにて"aaa"と書いたaaa.htmlと言う名前のファイルを作成)できると思うのですが、 動的に一部だけ変更するためにはjavascriptを利用するとか、cgiを利用(cgiでラップする?)しなければやっぱり駄目なのでしょうか? .htmlファイルにサーバ上でphpの関数の戻り値(テキスト)を組み込むのにはどうしたらよいですか?できたらjavascriptは使いたくないのですが。 乱文すみません。ご回答宜しく御願いします。

    • 締切済み
    • PHP
  • 複数のラジオボタンの選択チェック

    Q1とQ2の2問があり、ラジオボタンで回答を選択するようにしていますが、 ラジオボタンを選択しなかった場合、選択を促すようメッセージを表示させるようJavaScriptで以下のように作成してみましたがうまくいきません。 Q1とQ2の両方を選択しなかった場合、「Q1が選択されていません」とメッセージが表示されますが、Q1だけを選択してQ2を選択しなかった場合はメッセージが表示されません。 いろいろ調べてみたのですが、function checkの使い方に問題があるのでしょうか? function check(){ var flag = 0; if(document.form1.Q1.length) { flag = 1; var i; for(i = 0; i < document.form1.Q1.length; i ++){ if(document.form1.Q1[i].checked){ flag = 0; break; } } } if(flag){ window.alert('Q1が選択されていません'); return false; } else{ return true; } var flag = 0; if(document.form1.Q2.length) { flag = 1; var i; for(i = 0; i < document.form1.Q2.length; i ++){ if(document.form1.Q2[i].checked){ flag = 0; break; } } } if(flag){ window.alert('Q2が選択されていません'); return false; } else{ return true; } }

  • 戻り値を返す関数の前に(void)を付ける

    今日会社で 変数 = (void)戻り値のある関数 #具体的な例としては下記一例を参照 と、ソースで書かれているものがあったのですが、 コメント等では、 「戻り値を明示しないときに(void)を付けて使用する」 と、書いてあります。 戻り値のある関数の前で(void)を付けると、戻り値が明示されなくなるのでしょうか?? または、このような動作にはならないのでしょうか。 自分自身、ソースの内容をうる覚えになっておりますので、 確認をしながらアップしていきたいと思いますので、 宜しくお願い致します。 /*一例*/ ・num1とnum2を足した値を返す int PlusPoint(int num1 , num2); ・PlusPointの値を格納する int Sum ◇ソース◆ #include <stdio.h> #include "Plus.h" int main(void) { int Sum; Sum = (void)PlusPoint; if(Sum == 2) { printf("false"); exit(0); } printf("true"); return 0; } *PlusPoint関数は外部で定義されている *プロトタイプ宣言はPlus.hに定義されいるものとする

  • 複数関数からの戻り値returnの指定

    いつもお世話になります。 ActionScrip3に関する質問です。 処理1が終わった段階で戻り値をreturnするという処理を 作成したく下記のように作りました。 流れとしては、関数func1の中に複数の処理があると仮定して、その一連の処理を完了させた 時点でevent.complete(処理完了)によりfunc2に移動し、func2から戻り値の値を 指定したいと考えております。 下記の処理を行ってもfunc1の中でreturnを指定していないので「関数は戻り値をかえしません」 というエラーになってしまいますが、下記の処理以外でも結構ですので、 「一定の処理完了後に戻り値(return)を発生」させる手段をご教授いただけないでしょうか? お手数ではありますが、何卒宜しくお願いいたします。 var bln:Boolean; bln = func1(); function func1():Boolean {  // ここに複数の処理があると仮定する  // 終了後イベント  addEventListener(event.COMPLETE, finish);    function finish() {   return false;  } }

    • ベストアンサー
    • Flash
  • 複数の別ウィンドウを同じ位置に表示するには?

    以下のような別ウィンドウを表示する関数を用意しています。 開いたウィンドウの位置を全く同じ位置に表示させたいのですが、 JavaScriptで全く同じ位置にウィンドウを表示させることは可能なのでしょうか? function test1() {   var w = window.open("/TestServlet", "win1", "");   w.focus();   return false; } function test2() {   var w = window.open("/TestServlet2", "win2", "");   w.focus();   return false; }

専門家に質問してみよう