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 を実行し、ローカル メモリを最適化する方法の詳細な説明
Linuxライブラリを生成するLinux版はcentos7.3を使用し、コンパイルしてライブラリを生...
順序なしリストでは、順序なしリストのシンボルは各リストの前に表示されるドットです。順序付きリスト o...
目次データ量匿名マウントと名前付きマウントデータボリュームの場所データ量匿名マウントと名前付きマウン...
1. docker に nginx をインストールします。 docker に Nginx をインスト...
pre 要素は、フォーマット済みのテキストを定義します。 pre 要素で囲まれたテキストでは、通常、...
MySQL データベースの実行効率はプログラムの実行速度に大きな影響を与えます。データベースの効率的...
プロジェクト ページの作成中に、子要素が親要素の透明度を継承するという問題に遭遇しました。多くのドキ...
1. インデックスの役割一般的なアプリケーション システムでは、読み取りと書き込みの比率は約 10:...
オペレーティング システム: Win7 64 ビット Ultimate Edition MySQL ...
1. ダウンロードApacheの公式サイトhttp://httpd.apache.org/にアクセス...
1. プロジェクト文書 2. ページレイアウトにHTMLとCSSを使用するHTML部分 <di...
mkdir コマンドを使用して新しいディレクトリを作成できることは誰もが知っていますが、多くの場合、...
背景:以前、コンテナ内のホストが提供する Redis サービスにアクセスする必要があるプロジェクトを...
目次1. Vue ライフサイクル2. フック機能2.1 4つの段階と8つの方法に分かれています。 2...
目次序文計算されたプロパティ計算プロパティの紹介入門ケース統計価格事例ゲッターメソッドとセッターメソ...