アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

A 回答 (2件)

先に回答されている方の通りです。


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

この回答への補足

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

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

keisan(1,2);
等で

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

の場合、

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

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

補足日時:2012/03/25 17:42
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2012/03/25 19:00

>document.onkeydown = a();



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

この回答への補足

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

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

keisan(1,2);
等で

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

の場合、

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

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

補足日時:2012/03/25 17:42
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2012/03/25 19:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!