JS 匿名関数を使用しない理由
この記事では主に、js 匿名関数を使用しない 3 つの主な理由を分析します。匿名関数の役割は、グローバル変数の汚染と関数名の競合を避けることです。js 匿名関数の 3 つの主な理由については、この記事を参照してください。皆さんのお役に立てれば幸いです。
匿名関数の基本形式は (function(){...})();です
前のかっこには関数本体が含まれており、後続のかっこは匿名関数にパラメータを渡してすぐに実行します
匿名関数の目的は、グローバル変数の汚染と関数名の競合を避けることです
コードを読むときはいつでも、匿名関数に注意を払う必要があります。ラムダと呼ばれることもあれば、匿名関数と呼ばれることもあり、どちらにしても使いにくいと思います。
匿名関数が何なのかわからない場合は、次の引用を参照してください:
匿名関数は、実行時に動的に宣言される関数です。これらは、通常の関数とは異なり、関数名を持たないため、匿名関数と呼ばれます。 — Helen Emerson、Helephant.com
匿名関数の形式は次のとおりです:
function () { ... code ... } OR (args) => { ... code .. }
今日は、絶対に必要な場合にのみ匿名関数を使用するという考えを皆さんに理解してもらいたいと思います。匿名関数は優先されるべきではなく、理由がわかっている場合にのみ使用する必要があります。この考え方を理解すると、コードがよりクリーンになり、保守が容易になり、バグの追跡が容易になります。匿名関数の使用を避ける 3 つの理由から始めましょう:
コードを記述するとき、コードの入力がどれほど上手であっても、必ずエラーが発生します。これらのエラーは簡単に検出できる場合もあれば、そうでない場合もあります。
エラーの原因がわかれば、エラーを簡単に発見できます。エラーを見つけるには、スタック トレースと呼ばれるこのツールを使用します。スタック トレースについて詳しくない場合は、Google に素晴らしい入門書があります。
今、非常に単純なプロジェクトがあるとします:
function start () { (function middle () { (function end () { console.lg('test'); })() })() }
上記のコードには非常に愚かな間違い、タイプミスがあります (console.log)。小規模なプロジェクトでは、このスペル ミスは大きな問題にはなりません。 これが、多数のモジュールを含む非常に大規模なプロジェクトの小さなセクションである場合、問題は大きくなります。あなたがこの愚かな間違いを犯していないと仮定すると、新しいジュニア エンジニアは休暇に入る前にそれをコード ベースにコミットするでしょう。
さて、それを追跡しなければなりません。 慎重に名前を付けた関数を使用すると、次のスタック トレースが得られます:
ジュニア開発者の皆さん、関数に名前を付けてくれてありがとう! これで、バグを簡単に追跡できるようになりました。
しかし...この問題を修正した後、別のバグがあることがわかりました。 今回は上級開発者からのものでした。この人はラムダについて知っています
彼らはバグに遭遇したことが判明し、それを追跡するのが私たちの仕事です。
コードは次のとおりです:
(function () { (function () { (function () { console.lg('test'); })(); })(); })();
当然のことながら、この開発者は console.log のスペルを忘れていました。これは偶然すぎる!どれもその機能に名前を付けていないのは残念です。
それで、コンソールは何を出力するのでしょうか?
そうですね、少なくとも行番号はまだ残っていますよね?この例では、約 7 行のコードがあるように見えます。大きなコードブロックを扱うとどうなるでしょうか?コードは 1 万行くらいですか?行番号の範囲が非常に大きい場合はどうすればよいでしょうか?コードが折りたたまれた後にコード マップ ファイルがある場合、行番号のレンダリングはまったく役に立たないのでしょうか?
これらの質問に対する答えは非常に簡単だと思います。答えは次のとおりです。これらのことを考えると、一日がかなり悲惨になります。
可読性
ねえ、信じられないと聞きました。あなたはまだ匿名関数にアタッチされており、バグは一度も発生していません。あなたのコードが完璧だと思っていることをお詫びしなければなりません。これを見てみましょう!
次の 2 つのコードを見てください:
function initiate (arguments) { return new Promise((resolve, reject) => { try { if (arguments) { return resolve(true); } return resolve(false); } catch (e) { reject(e); } }); } initiate(true) .then(res => { if (res) { doSomethingElse(); } else { doSomething(); } ).catch(e => { logError(e.message); restartApp(); } );
これは非常に珍しい例ですが、私が言おうとしていることはすでに理解されていると思います。このメソッドは Promise を返し、この Promise オブジェクト/メソッドを使用して、考えられるさまざまな応答を処理します。
いくつかのコードは読みにくくないと思うかもしれませんが、もっと良くできると思います。
匿名関数をすべて削除したらどうなるでしょうか?
function initiate (arguments) { return new Promise(checkForArguments); } function checkForArguments (resolve, reject) { try { if (arguments) { return resolve(true); } return resolve(false); } catch (e) { reject(e); } } function evaluateRes (res) { if (res) { doSomethingElse(); } else { doSomething(); } } function handleError (e) { logError(e.message); restartApp(); } initiate(true) .then(evaluateRes) .catch(handleError);
さて、はっきりさせておきますが、コードのこの部分は長くなりますが、単に読みやすくなっただけではないと思います。慎重に名前を付けた関数は、名前を見ればすぐにその関数が何であるかがわかるという点で、匿名関数とは異なります。これにより、コードを評価する際の障害が回避されます。
これは関係を明確にするのにも役立ちます。 2 番目の例では、メソッドを作成して渡してロジックを実行するのではなく、then と catch に引数が与えられ、すべてが行われる関数を指すだけです。
読みやすさに関しては、これ以上言うことはありません。しかし、まだ納得していない場合は、最後の議論を試みることができます。
関連する推奨事項:
以上がJS 匿名関数を使用しない理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

Passwordが暗号化された形式で保存されているため、MariadbのNavicatはデータベースパスワードを直接表示できません。データベースのセキュリティを確保するには、パスワードをリセットするには3つの方法があります。NAVICATを介してパスワードをリセットし、複雑なパスワードを設定します。構成ファイルを表示します(推奨されていない、高リスク)。システムコマンドラインツールを使用します(推奨されません。コマンドラインツールに習熟する必要があります)。

MySQLをエレガントにインストールするための鍵は、公式のMySQLリポジトリを追加することです。特定の手順は次のとおりです。MYSQLの公式GPGキーをダウンロードして、フィッシング攻撃を防ぎます。 mysqlリポジトリファイルを追加:rpm -uvh https://dev.mysql.com/get/mysql80-community-rease-el7-3.noarch.rpm update yumリポジトリキャッシュ:yumアップデートインストールmysql:yumインストールmysql-server startup mysql sportin

Centosは、上流の分布であるRhel 8が閉鎖されたため、2024年に閉鎖されます。このシャットダウンはCentos 8システムに影響を与え、更新を継続し続けることができません。ユーザーは移行を計画する必要があり、提案されたオプションには、Centos Stream、Almalinux、およびRocky Linuxが含まれ、システムを安全で安定させます。

MySQLのキルコマンドは、プロセスの特別なステータスと不適切な信号レベルのために失敗することがあります。 MySQLプロセスを効果的に終了する方法には、次のものが含まれます。プロセスステータスの確認、MySQladminコマンド(推奨)、慎重にキル-9を使用し、システムリソースのチェック、エラーログの詳細なトラブルシューティング。

NAVICATはセキュリティ上の理由で暗号化されたパスワードを保存するため、NAVICATからPostgreSQLパスワードを直接表示することは不可能です。パスワードを確認するには、データベースに接続してみてください。パスワードを変更するには、PSQLまたはNAVICATのグラフィカルインターフェイスを使用してください。他の目的のために、ハードコーディングされたパスワードを避けるために、コード内の接続パラメーターを構成する必要があります。セキュリティを強化するには、強力なパスワード、定期的な変更を使用し、多要素認証を有効にすることをお勧めします。
