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 を実行し、ローカル メモリを最適化する方法の詳細な説明
MySQL-8.0.23 をダウンロードクリックしてダウンロード: mysql-8.0.23-li...
目次序文バックグラウンドデータの結合フロントエンドデータ表示ページ効果表示Avue.js は、既存の...
効果(ソースコードは最後にあります): 成し遂げる: 1. タグを定義します。 <h1>...
Samba サービス:このコンテンツはサンバサービス学習者の参考用ですケースの説明:企業の管理者は、...
Taobao のウェブページはインポートを使用していますが、多くのウェブサイトはリンクを使用していま...
この記事では、カレンダー効果を実現するためのBootstrap+Jqueryの具体的なコードを参考ま...
1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...
目次1. 基本的な例2. インスタンスプロトタイプのスコープを設定する3. グローバル変数の登録と使...
tomcat が起動されるたびに、次のログ ファイルがログ ディレクトリに自動的に生成され、日付順...
同僚から、一時テーブルを使用して変数データを挿入して表示する方法を教わったことがありますが、この方法...
フレームセット ページは通常の Web ページとは多少異なります。依然として <HTML>...
私は最近 Linux を学び始めました。Ma Ge の umask に関する Linux コースを読...
1. package.jsonに追加する "メイン": "electr...
<br />オリジナルURL: http://www.lxdong.com/post/m...
今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテ...