みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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;
の理由がわかりません。

どこを見ると、()なしでいいという情報を得ることができるでしょうか
ご教授よろしくお願いします。

投稿日時 - 2012-03-25 14:52:13

QNo.7383010

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2012-03-25 15:46:33

補足

情報ありがとうございます。

関数で引数を使用するものがあると思うのですが、

keisan(1,2);
等で

function keisan(x,y){
a=x+y;
documnet.write(a);
}

の場合、

document.onkeydown = keisan();
の使い方は間違っているということになるのでしょうか?

キーが押されたとき、足し算させて処理をさせ、結果を表示させる。
という内容にしたいのですが。

投稿日時 - 2012-03-25 17:42:24

お礼

少し今一つ整理できないので別質問として上げさせていただきます。

情報ありがとうございました。

投稿日時 - 2012-03-25 19:00:46

ANo.1

>document.onkeydown = a();

は、a()の戻り値を代入するという意味です

投稿日時 - 2012-03-25 15:41:05

補足

情報ありがとうございます。

関数で引数を使用するものがあると思うのですが、

keisan(1,2);
等で

function keisan(x,y){
a=x+y;
documnet.write(a);
}

の場合、

document.onkeydown = keisan();
の使い方は間違っているということになるのでしょうか?

キーが押されたとき、足し算させて処理をさせ、結果を表示させる。
という内容にしたいのですが。

投稿日時 - 2012-03-25 17:42:04

お礼

少し今一つ整理できないので別質問として上げさせていただきます。

情報ありがとうございました。

投稿日時 - 2012-03-25 19:00:31

あなたにオススメの質問