• 締切済み

document.onkeydownについて

HTML5で、javascriptの中に、 ============ソース一部=========== //関数 function a(evt) { if (evt.keyCode == 39) rD = true; } document.onkeydown = a; ============ソース一部 ここまで=========== と記述されている文がありました。  document.onkeydown = a; で、onkeydownに、a関数を登録したのだろうということまでは 予想がつくのですが、aの後ろに()は不要なのでしょうか? キーが押されたイベントが、evtには自動で入ってると思うのですが、 関数登録?呼び出し宣言をするときに、  document.onkeydown = a(); ではなく  document.onkeydown = a; の理由がわかりません。 どこを見ると、()なしでいいという情報を得ることができるでしょうか ご教授よろしくお願いします。

みんなの回答

  • gorusura
  • ベストアンサー率59% (25/42)
回答No.2

先に回答されている方の通りです。 a() は、 a関数を実行するということですので、 document.onkeydown = a(); だと、a関数を実行した戻り値を代入することになり、結果戻り値なしなので、undefined を代入することになります。 document.onkeydown = a; なら、a関数自体を代入していますので、documentオブジェクトでkeydownイベントが発生したときに、実行してくれます。

ShiftTail
質問者

お礼

少し今一つ整理できないので別質問として上げさせていただきます。 情報ありがとうございました。

ShiftTail
質問者

補足

情報ありがとうございます。 関数で引数を使用するものがあると思うのですが、 keisan(1,2); 等で function keisan(x,y){ a=x+y; documnet.write(a); } の場合、 document.onkeydown = keisan(); の使い方は間違っているということになるのでしょうか? キーが押されたとき、足し算させて処理をさせ、結果を表示させる。 という内容にしたいのですが。

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>document.onkeydown = a(); は、a()の戻り値を代入するという意味です

ShiftTail
質問者

お礼

少し今一つ整理できないので別質問として上げさせていただきます。 情報ありがとうございました。

ShiftTail
質問者

補足

情報ありがとうございます。 関数で引数を使用するものがあると思うのですが、 keisan(1,2); 等で function keisan(x,y){ a=x+y; documnet.write(a); } の場合、 document.onkeydown = keisan(); の使い方は間違っているということになるのでしょうか? キーが押されたとき、足し算させて処理をさせ、結果を表示させる。 という内容にしたいのですが。

すると、全ての回答が全文表示されます。

関連するQ&A