ホームページ >ウェブフロントエンド >jsチュートリアル >setTimeout に文字列を渡す必要があるでしょうか?

setTimeout に文字列を渡す必要があるでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-20 07:32:02953ブラウズ

Is It Ever Necessary to Pass Strings to setTimeout?

setTimeout に文字列を渡す: 必要性の問題

多くの開発者は、パフォーマンス上の懸念、潜在的なセキュリティ リスク、および非推奨であるため、setTimeout に文字列を渡す習慣に眉をひそめています。状態。ただし、この構文が有益なシナリオがまれに存在する可能性があります。

非推奨の議論

setTimeout と setInterval の従来の構文では、実行するコードを表す文字列を渡す必要がありました。例:

<code class="javascript">setTimeout('doSomething(someVar)', 10000);</code>

ただし、最新の JavaScript では代わりに関数参照の使用が推奨されています。

<code class="javascript">setTimeout(function() {
    doSomething(someVar);
}, 10000);</code>

文字列の引数

推奨される構文から逸脱する正当な理由がある場合。考えられる引数の 1 つは、グローバル スコープ内に存在するが、ローカルでオーバーライドされた可能性がある関数または変数にアクセスしたいという要求です。

文字列に対するケース

この理論的根拠にもかかわらず、文字列の使用はsetTimeout では使用しないことを強くお勧めします。グローバル変数には、ウィンドウ オブジェクトのプロパティを通じて引き続きアクセスできます。例:

<code class="javascript">setTimeout(window.doSomething(someVar), 10000);</code>

歴史的許容度

setTimeout および setInterval の引数として文字列を許可することは、歴史的要因に根ざしている可能性があります。 JavaScript の初期バージョンでは文字列のみがサポートされていました。関数参照を渡す機能の追加は後から追加されたものです。下位互換性を確保するために、ブラウザでは文字列構文が非推奨になっても引き続き使用できます。

結論

特定のケースでは文字列を setTimeout に渡すことは技術的には可能ですが、一般的には行われません。代替アプローチが利用できるため、推奨されます。関数参照を使用すると、パフォーマンスが向上し、セキュリティが強化され、最新のコード ガイドラインに準拠します。したがって、明確さ、保守性、全体的なコード品質を考慮して、非推奨の文字列構文は避ける必要があります。

以上がsetTimeout に文字列を渡す必要があるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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