• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数を呼んだら、その中の関数も自動実行される?)

関数の実行タイミングが分からないので教えてください

このQ&Aのポイント
  • 関数を呼んだら、その中の関数も自動実行されるのか?関数の実行タイミングが分からないので教えてください。
  • 下記のコードで、なぜ引数が渡るのか疑問です。「goo」は無名関数を格納するための変数だと思うのですが、関数実行になるのでしょうか?引数が渡る理由を教えてください。
  • 自分的には、portal関数を呼んで変数「goo」に無名関数を格納した後、明示的に「goo」を呼ぶ必要があると思うのですが、下記のコードでTypeErrorエラーになってしまいます。なぜエラーが発生するのか教えてください。明示的に呼んだ2回目は引数が渡らないからでしょうか?

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

  • ベストアンサー
回答No.2

関数について以下のことをしっかり抑えておきましょう。 (1)関数の定義   var hoge = function(){return 5;}; (2)関数の実行   hoge();//関数が実行され、5が返される。 次に関数の定義と実行を纏めて行う方法。 (3)関数の定義と同時に実行(最後に()が付くのがポイント) var hoge = function(){return 5;}();   最後に()を付けることで、定義と同時に関数が実行される。 この時、hogeには、関数の実行結果である5が格納される。 (4) 関数の定義と実行(引数あり)   var hoge = function(fuga){return fuga;}(10); 最後の()内の10がfugaに入り、関数はその数(10)を返し、hogeに代入。 定義時実行の書き方としては、以下の2パターンが有る。 (function(){})(); function(){}();

re97
質問者

お礼

回答ありがとうございました。 説明大変分かりやすかったです。 勉強になりましたー

その他の回答 (1)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

この2つの違いについてご自分で動かしてチェックしてみてください。 (1)  var obj = function(a){return a*a;}(5);  console.log(obj.toString()); (2)  var obj = function(a){return a*a;};  console.log(obj.toString());

re97
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

関連するQ&A

専門家に質問してみよう