学んだことのログ

プログラミングとかものを作るのが好きです

JSの関数を実行したいときに括弧( )を付けるときとつけないときの違い

括弧( )を付けるとき

こういう状態のとき

    start();

前提:関数の横に括弧( )を入れると関数が実行する。

そのため、ブラウザがこの箇所を読み込んだ時に処理が実行する。

括弧( )を付けないとき

こういう状態のとき

document.body.onkeydown start;

前提:onkeydownとは「何がキーが押されたとき」のイベントハンドラ

onkeydownにstartいう関数を代入しておくことで、「何がキーが押されたとき」に代入した関数が実行される。

ちなみに

こう書くとどうなる

document.body.onkeydown start;

 関数に括弧( )をつけると実行になるため、onkeydownに対して、start関数が実行したものを登録している状態になる。

つまりJSファイル読み込み時にstart()が実行され、その時点での実行結果がonkeydownに代入されてしまう。

onkeydownに対してイベントが発火したときに関数を実行したい場合は、関数のみを登録するようにする。