1. ホーム
  2. javascript

[解決済み] JavaScriptで、括弧を付けて関数を呼び出すと、何か違いがありますか?

2022-10-26 23:04:49

質問

関数を呼び出すときに、括弧がある場合とない場合の違いに気がつきました。しかし、私は関数に引数を渡していないので、何が違うのだろうかと思いました。

window.onload = initAll();

window.onload = initAll;

その原理を説明してください。

どのように解決するのですか?

<ブロッククオート
window.onload = initAll();

これは が実行されます。 initAll() ただちに を代入し 関数の戻り値 window.onload . これは通常 ではなく になります。 initAll() は、これが意味をなすために関数を返さなければならないでしょう。

window.onload = initAll;

これは 実際の関数 window.onload - これは、JavaScript では @Felix が言うように、関数がファーストクラスのオブジェクトであるために可能なことです - 実行することなく initAll はロードイベントによって実行されます。

また、このようなものが表示されることもあります。

window.onload = () => initAll();

これは、新しい関数を作成します。 と呼ばれると を呼び出します。 initAll すぐに . ここではそのために括弧が必要です"。 呼ぶ initAll すぐに という部分が動作します。しかし、これは関数でラップされているため、外側の関数自体が呼び出されるまで何も実行されず、その外側の関数のリファレンスを window.onload に代入します。 initAll はloadイベントでも実行されます。