- ベストアンサー
javascript 一回目実行
失礼します現在一回目だけ処理したい内容があり、サンプルコードを探してみたのですが、 処理の流れがわからない状態です汗 ご教授頂けると助かります //即時関数 var trueOnlyFirstTime = (function(){ var b = true; //戻り値として関数を実行する return function(){ if(b){ b = false; return true; } return false; }; })();
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
説明が少し複雑になるかもしれません。 まず、最初の関数宣言で[ b = true ] が変数として関数内に保存されています。 次に、trueOnlyFirstTime()の実行すると、最初に設定された[ b = true ] によって、条件式が働き、trueが返され、同時に[ b = false ]として関数内変数の値が書き換えられています。 ここで意図的にtrueOnlyFirstTime()を実行しない限り、この関数が2回以上実行されることはありませんが、仮に実行されたと仮定するなら、2回目以降は、書き換えられた[ b = false ]によって条件式の結果としてfalseが返されます。
その他の回答 (2)
- amanojaku1
- ベストアンサー率54% (265/488)
もっと分かりやすいプログラムにしたら良いのでは? <html> <head> <meta http-equiv="Content-Type" content="Text/HTML; charset=Shift_JIS"> </head> <script type="text/javascript"><!-- function OnlyFirstTime( ){ if( typeof FirstTime == "undefined" ){ FirstTime = false; } if( ! FirstTime ){ FirstTime = true; // ここに記述されたプログラムは1度しか実行されません。 document.write('こんにちは'); } } OnlyFirstTime( ); OnlyFirstTime( ); OnlyFirstTime( ); // --></script> </html>
お礼
有難うございます。参考にさせて頂きます。
- tracer
- ベストアンサー率41% (255/621)
もう少し回答者側の立場になって具体的に質問内容を考えられると、より具体的な回答がつくと思いますよ。 一回とは何に対しての一回でしょうか。通常javaScriptは、ページが表示されたら1回だけ動作します。 また、「処理の流れが分からない」の意味も不明です。どこまでできて、どこからできないか、どこまでは理解していて、どこから理解できないのか、それが分からないと、「全部何もかも分からない」という話になってしまいます。冗談ではなく、そういう方には「パソコンの電源は入ってますか?」から始める必要さえ感じてしまいます。 具体的に何が不明で、実際に何がどのように問題になっているのでしょうか?
補足
失礼しました。 この関数が実行された場合どのような処理が行われるかが知りたいです。 二回処理が行われた場合この関数は実行して欲しくなく、サンプルを見ると最初はtrueで2回目はfalseで実行されないのかな?と思ったのですが、 return falseの前にreturn trueがあるので、どういった動きをするかが、掴めなくて、、、 こんな説明ですいません汗
お礼
有難うございます。 説明を頂き処理の流れを把握できました。