1. 短絡や条件文の代わりにデフォルトのパラメータを使用する通常、デフォルト引数は短絡よりも簡潔です。 関数 SomeMethod(paramThatCanBeUndefined) { const localValue = paramThatCanBeUndefined || "デフォルト値"; コンソール.log(ローカル値) // ... } SomeMethod() // デフォルト値 SomeMethod("SomeValue") // SomeValue 次のことを試してください。 関数SomeMethod( console.log(未定義の可能性があるパラメータ) // ... } SomeMethod() // デフォルト値 SomeMethod("SomeValue") // SomeValue ステートメント: ''、"、false、null、0、NaN などの偽の値はデフォルト値に置き換えられません。 function SomeMethod(paramThatCanBeUndefined = "デフォルト値") { console.log(未定義の可能性があるパラメータ) // ... } SomeMethod(null) // デフォルト値は設定されず、代わりにnullが設定されます SomeMethod("SomeValue") // SomeValue 2. 複数の条件の処理const Conditions = ["条件 2","条件文字列 2"]; いくつかの関数(str){ if(str.includes("someValue1") || str.includes("someValue2")){ 真を返す }それ以外{ 偽を返す } } これをよりきれいに行う方法は次のとおりです。 いくつかの関数(str){ const 条件 = ["someValue1","someValue2"]; 条件.some(condition=>str.includes(condition)) を返します。 } 3. スイッチを動的なキーと値のペア(オブジェクトリテラルなど)に置き換えるスイッチ バージョン (またはスイッチを if/else に置き換えます): 定数UserRole = { 管理者: 「管理者」、 GENERAL_USER: 「一般ユーザー」、 SUPER_ADMIN: 「スーパー管理者」、 }; 関数 getRoute(userRole = "デフォルトロール"){ スイッチ(ユーザーロール){ UserRole.ADMINの場合: 「/admin」を返す UserRole.GENERAL_USERの場合: 「/GENERAL_USER」を返す UserRole.SUPER_ADMINの場合: 「/superadmin」を返す デフォルト: 戻る "/" } } console.log(getRoute(UserRole.ADMIN)) // "/admin" を返す console.log(getRoute("Anything")) // デフォルトパスを返す console.log(getRoute()) // デフォルトパスを返す console.log(getRoute(null)) // デフォルトパスを返す // 新しいケースが到着した場合 // switch の代わりに if else を考えることもできます 動的キーと値のペアのバージョン: 定数UserRole = { 管理者: 「管理者」、 GENERAL_USER: 「一般ユーザー」、 SUPER_ADMIN: 「スーパー管理者」、 }; 関数 getRoute(userRole = "デフォルトロール"){ 定数appRoute = { [UserRole.ADMIN]: "/admin", [UserRole.GENERAL_USER]: "/user", [UserRole.SUPER_ADMIN]: "/スーパー管理者" }; return appRoute[userRole] || "デフォルトパス"; } console.log(getRoute(UserRole.ADMIN)) // "/admin" を返す console.log(getRoute("Anything")) // デフォルトパスを返す console.log(getRoute()) // デフォルトパスを返す console.log(getRoute(null)) // デフォルトパスを返す // ここでは switch/if-else は不要です。 // さらなる拡張が容易 4. 関数パラメータが多すぎないようにする関数 myFunction(従業員名、役職、年数、専攻){ `${employeeName} は ${jobTitle} として働いており、${majorExp} で ${yrExp} 年の経験があります` を返します } //出力は、ジョンがプロジェクト管理で12年の経験を持つプロジェクトマネージャーとして働いているようなものになります // 次のように呼び出すことができます console.log(myFunction("John","プロジェクト マネージャー",12,"プロジェクト管理")) // ***** 問題は ***** // 「クリーンコード」原則違反 // パラメータの順序付けは重要です // 使用されていない場合は未使用のパラメータの警告 // テストでは多くのエッジケースを考慮する必要があります。 より簡潔な方法は次のとおりです。 関数 myFunction({従業員名,役職,年数,専攻数}){ `${employeeName} は ${jobTitle} として働いており、${majorExp} で ${yrExp} 年の経験があります` を返します } //出力は、ジョンがプロジェクト管理で12年の経験を持つプロジェクトマネージャーとして働いているようなものになります // 次のように呼び出すことができます const mockTechPeople = { 従業員名:"ジョン", jobTitle:"プロジェクトマネージャー", 年数:12, 専攻分野:「プロジェクト管理」 } コンソールログ(myFunction(mockTechPeople)) // ES2015/ES6 分割構文が動作しています // 必要な変数に目的の値をマップします。 5. Object.assignを使用してデフォルトのオブジェクトを設定するこれは面倒なようです: 定数someObject = { タイトル: null、 subTitle: "サブタイトル", ボタンカラー: null、 無効: true }; 関数createOption(someObject) { someObject.title = someObject.title || "デフォルトのタイトル"; someObject.subTitle = someObject.subTitle || "デフォルトのサブタイトル"; someObject.buttonColor = someObject.buttonColor || "青"; someObject.disabled = someObject.disabled !== 未定義ですか? someObject.disabled : true; someObjectを返す } console.log(createOption(someObject)); // 出力は次のようになります // {title: 'デフォルトのタイトル'、subTitle: 'サブタイトル'、buttonColor: 'blue'、disabled: true} このアプローチの方が良いようです: 定数someObject = { タイトル: null、 subTitle: "サブタイトル", ボタンカラー: null、 無効: true }; 関数createOption(someObject) { const newObject = Object.assign({ タイトル: "デフォルトのタイトル", subTitle: "デフォルトのサブタイトル", ボタンの色: "青", 無効: true },someObject) 新しいオブジェクトを返す } console.log(creteOption(someObject)); これで、JavaScript コードベースをよりクリーンにする 5 つの方法についての記事は終了です。JavaScript コードベースをよりクリーンにする 5 つの方法についての詳細は、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。読んでいただきありがとうございます 以下もご興味があるかもしれません:
|
<<: MySQLデータベースが予期せずクラッシュし、テーブルデータファイルが破損して起動できなくなる問題を解決します。
>>: Linux システムで jmeter を実行し、ローカル メモリを最適化する方法の詳細な説明
JSON データを美しいインデント形式で表示するには、最も単純な JSON.stringify 関...
序文Nginx 構成のサーバー ブロック内の場所は、リクエスト URI を一致させるために使用され、...
Linux システムで iso ファイルをインストールするにはどうすればいいですか?インストール手順...
目次序文1. シングルユーザーモードでの一般的なバグ修正2. シングルユーザーモードでシステムパスワ...
1. nginxをインストールして起動する # nginxをインストールする sudo apt-ge...
1. プロジェクトwarが保存されているディレクトリを入力しますDockerfileを編集する vi...
この記事では、例を使用して、MySQL ストアド プロシージャでの case ステートメントの使用方...
1. 絶対配置レイヤーの隣接フローティング レイヤーの幅が親レイヤーの幅と等しくなく、フロートがクリ...
MySQL 8.0 for Windows v8.0.11 公式無料バージョン 64 ビット1. デ...
目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...
この記事の例では、双方向データバインディングを実装するためのVueの具体的なコードを参考までに共有し...
私の MySQL バージョンは MYSQL V5.7.9 です。古いバージョンを使用してください: ...
Redis の紹介Redis は完全にオープンソースで無料であり、BSD プロトコルに準拠しており、...
目次例方法1: 削除方法2: 分解補充する要約するThinking シリーズは、10 分で実用的なプ...
必要なリンクにインライン スタイルを追加します。コードをコピーコードは次のとおりです。 <a ...