ホームページ  >  記事  >  ウェブフロントエンド  >  setTimeout を使用した文字列ベースの関数呼び出しは正当化されますか?

setTimeout を使用した文字列ベースの関数呼び出しは正当化されますか?

DDD
DDDオリジナル
2024-10-20 07:42:02783ブラウズ

Can String-Based Function Calls with setTimeout Be Justified?

文字列を setTimeout に渡す: 回避の理由と例外

文字列を setTimeout またはその setInterval に渡すことは、一般的に devido に嫌われます。グローバル スコープでの実行に関する懸念、潜在的なパフォーマンスの問題、およびセキュリティの脆弱性。推奨される代替方法は、匿名関数を最初の引数として使用することです。

ただし、特定の状況では節約できる場合があります。プログラマが、グローバル スコープ内に存在するがローカルでオーバーライドされている関数または変数にアクセスしようとしている場合は、非推奨の文字列構文の使用を検討することがあります。それにも関わらず、このアプローチは、変数のシャドウイングの可能性があるため、不適切なプログラミング方法とみなされます。

ほとんどの場合、グローバル変数にウィンドウ オブジェクト (例: window.globalVar) のプロパティとしてアクセスすることが可能です。文字列ベースの関数呼び出しに頼る必要はありません。したがって、文字列を setTimeout または setInterval の最初の引数として使用することが本当に有益であるシナリオに遭遇する可能性は非常に低いです。

歴史的に、これらの関数の引数としてコード文字列を使用できる唯一の理由は、次のようなものでした。 JavaScript 1.0 の制限。引数としての Function オブジェクト参照の導入は、JavaScript 1.2 でのみ発生しました。古いブラウザやスクリプトとの互換性を維持すると、開発者が文字列ベースの呼び出しを完全に排除することができなくなります。注意事項とまれな例外の両方を理解することで、プログラマーは setTimeout と setInterval を含むコードを作成するときに情報に基づいた決定を下すことができます。

以上がsetTimeout を使用した文字列ベースの関数呼び出しは正当化されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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