JSの関数を実行したいときに括弧( )を付けるときとつけないときの違い
括弧( )を付けるとき
こういう状態のとき
start();
前提:関数の横に括弧( )を入れると関数が実行する。
そのため、ブラウザがこの箇所を読み込んだ時に処理が実行する。
括弧( )を付けないとき
こういう状態のとき
document.body.onkeydown = start;
前提:onkeydownとは「何がキーが押されたとき」のイベントハンドラ。
onkeydownにstartいう関数を代入しておくことで、「何がキーが押されたとき」に代入した関数が実行される。
ちなみに
こう書くとどうなる
document.body.onkeydown = start;
関数に括弧( )をつけると実行になるため、onkeydownに対して、start関数が実行したものを登録している状態になる。
つまりJSファイル読み込み時にstart()が実行され、その時点での実行結果がonkeydownに代入されてしまう。
onkeydownに対してイベントが発火したときに関数を実行したい場合は、関数のみを登録するようにする。