ホームページ >ウェブフロントエンド >jsチュートリアル >`setTimeout('alertMsg()', 3000)` よりも `setTimeout(alertMsg, 3000)` が優先されるのはなぜですか?

`setTimeout('alertMsg()', 3000)` よりも `setTimeout(alertMsg, 3000)` が優先されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-22 08:39:14981ブラウズ

Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout(

引用符と括弧を使用した setTimeout の使用の違い

setTimeout を使用する場合、引用符や括弧なしで関数を直接呼び出すことも、関数名を引用符で囲むこともできます括弧付き。内訳は次のとおりです:

括弧付き:

setTimeout("alertMsg()", 3000);

この場合、「alertMsg()」は文字列として扱われ、setTimeout はこの文字列を次のように実行します。スクリプト。この方法は、予期しない動作を引き起こす可能性があるため推奨されません

引用符と括弧なし:

setTimeout(alertMsg, 3000);

これが推奨される方法です。関数参照を setTimeout に渡します。これは関数であると想定されるalertMsgを直接渡します。

引用符のみ:

setTimeout("alertMsg", 3000);

これは前の例のエイリアスですが、推奨されません。これは、文字列を setTimeout に渡していることを暗示しており、誤解を招く可能性があります。

setTimeout に関する追加の考慮事項

  • 関数のリファレンスを渡す: 常に関数を渡します。参照または匿名関数を setTimeout の最初の引数として使用します。
  • Pass引数: 関数に引数を渡すには、コールバックを使用するか、setTimeout への引数として含める、ブラウザ間互換性の低い方法を使用します。
  • コールバック コンテキスト: デフォルトでは、コールバックのコンテキストはグローバル オブジェクト ウィンドウです。バインドを使用して変更できます。
  • セキュリティ: 任意のスクリプトが実行される可能性があるため、setTimeout に文字列を渡すことは避けてください。

以上が`setTimeout('alertMsg()', 3000)` よりも `setTimeout(alertMsg, 3000)` が優先されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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