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

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

Linda Hamilton
リリース: 2024-11-22 08:39:14
オリジナル
973 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート