ホームページ >ウェブフロントエンド >jsチュートリアル >「setTimeout」の関数呼び出しを常に括弧で囲まないのはなぜですか?

「setTimeout」の関数呼び出しを常に括弧で囲まないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-23 18:27:17717ブラウズ

Why Don't Parentheses Always Surround Function Calls in `setTimeout`?

関数呼び出しで括弧を使用する場合

次のコードを調べるとき:

var myFunction = function() {
  setTimeout(myFunction, 1000);
}
myFunction();

なぜなのか疑問に思うかもしれません。 setTimeout 内の関数呼び出しには括弧は必要ありませんが、独立した関数呼び出しには括弧が必要ありません。

区別を理解する

  • myFunction: この名前は関数定義を参照します。
  • myFunction(): かっこを追加すると、 function.

タイムアウト関数の引数

setTimeout は、関数参照を引数の 1 つとして受け取ります。指定されたコードでは、myFunction がコールバック関数として参照されています。

タイムアウト引数の括弧

setTimeout(myFunction(), 1000) に括弧が含まれていると、意図しない結果が生じる可能性があります。 myFunction が関数を返す場合 (たとえば、アロー関数を使用する場合)。このような場合、setTimeout は関数参照自体ではなく、myFunction の戻り値を受け取ります。これにより、関数が繰り返し実行されたり、予期しない動作が発生したりする可能性があります。

そのため、関数参照を期待する setTimeout または同様のメソッドを使用する場合は、関数の引数のかっこを省略することが一般的に推奨されます。

🎜>

以上が「setTimeout」の関数呼び出しを常に括弧で囲まないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。