多くの開発者は、パフォーマンス上の懸念、潜在的なセキュリティ リスク、および非推奨のため、setTimeout に文字列を渡す習慣に眉をひそめています。状態。ただし、この構文が有益なシナリオがまれに存在する可能性があります。
setTimeout と setInterval の従来の構文では、実行するコードを表す文字列を渡す必要がありました。例:
setTimeout('doSomething(someVar)', 10000);
ただし、最新の JavaScript では代わりに関数参照の使用が推奨されています。
setTimeout(function() {
doSomething(someVar);
}, 10000);
推奨される構文から逸脱する正当な理由があるかどうかを検討するときに議論が生じます。考えられる引数の 1 つは、グローバル スコープ内に存在するが、ローカルでオーバーライドされた可能性がある関数または変数にアクセスしたいということです。
この理論的根拠にもかかわらず、文字列の使用はsetTimeout では使用しないことを強くお勧めします。グローバル変数には、ウィンドウ オブジェクトのプロパティを通じて引き続きアクセスできます。例:
setTimeout(window.doSomething(someVar), 10000);
setTimeout および setInterval の引数として文字列を使用できる可能性があります。歴史的要因に根ざしています。 JavaScript の初期バージョンでは文字列のみがサポートされていました。関数参照を渡す機能の追加は後から追加されたものです。下位互換性を確保するために、ブラウザでは文字列構文が非推奨であっても引き続き使用できます。
場合によっては文字列を setTimeout に渡すことは技術的には可能ですが、一般的にはそうではありません。代替アプローチが利用できるため、推奨されます。関数参照を使用すると、パフォーマンスが向上し、セキュリティが強化され、最新のコード ガイドラインに準拠します。したがって、非推奨の文字列構文は、明確さ、保守性、および全体的なコード品質を考慮して避ける必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3