• ベストアンサー

window.onload = cli;はなぜ括弧が必要ないのでしょうか?

通常は、 function cli(){ ~; } をonclickで実行する場合、 onclick = cli(); で動作しますが、 window.onload = cli; ↑で実行する場合はなぜcliの括弧がなくても実行できるのでしょうか。 何か深い意味があるのでしょうか。 素朴な疑問ですが、よろしくお願い致します。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

window.onload = cli()ですと、 cli()を実行した結果(戻り値)をonloadに入れていることになるからNG。 window.onload = cliはwindowオブジェクトのonloadメソッドを cliという関数(メソッド)に書き換えているという意味です。 ふつうは無名関数をつかって window.onload = function(){cli();} 的な処理をします。 もっときちんとやるなら、イベントリスナーやらDOMやら ありますが、まぁそれはおいおい覚えてください。

reggaepunc
質問者

お礼

うお!すばらしい解説! javascriptの理解が深まりました。 いや、プログラミングの理解が進んだと思います! 千金の回答です。(一般人とは思えない完璧な回答ではないでしょうか。) ちなみに、ご回答頂いたような解説を学ぶことができる書籍かwebサイトをご紹介頂けないでしょうか。さらに理解を進めたいと思います。

専門家に質問してみよう