window.setTimeout であっても window.setInterval であっても、関数名を呼び出しハンドルとして使用する場合はパラメーターを受け取ることができないため、それを解決する方法を見つける必要があります。
たとえば。 、関数 hello(_name) の場合、ユーザー名のウェルカム メッセージを表示するために使用されます:
var userName ="Tony";
//ユーザー名に基づいてウェルカム メッセージを表示します
function hello(_name){
alert("hello," _name);
}
現時点では、次のステートメントを使用して hello 関数の実行を 3 秒遅らせることはできません:
window.setTimeout(hello() userName),3000);
これにより、hello 関数がすぐに実行され、値が呼び出しハンドルとして setTimeout 関数に渡され、結果はプログラムが必要とするものではありません。文字列形式を使用します:
window.setTimeout("hello(userName)",3000);
here この文字列は、userName が変数を表す JavaScript コードの一部です。十分直感的ですが、場合によっては関数名を使用する必要があります。ここでは、パラメーターを使用して関数を呼び出すためのちょっとしたトリックを示します。
関数 _hello は、パラメーターを受け取り、パラメーターなしで関数を返すためにここで定義されているため、この関数内では外部関数のパラメーターが使用されます。 window.setTimeout 関数では、_hello(userName) を使用してパラメータなしで関数を返すことができ、パラメータを渡す機能を実現します。