Saya percaya bahawa semua orang mempunyai lebih kurang kod projek dengan berbilang if else
s sangat menjengkelkan semasa penyelenggaraan Kadang-kadang selepas pepijat diperiksa, saya berasa tidak selesa. if else
Semua orang tahu betapa bergunanya if else
ini hanya untuk memberikan anda idea tambahan dalam beberapa senario tertentu untuk meningkatkan kecekapan kod kami. if else
kadangkala boleh digunakan untuk menggantikan yang lebih mudah ||
if else
||
let c if(a){ c = a } else { c = b }
let c = a || b
dan satu tahap if else
pengendali ternary disyorkan di sini, kerana operator ternary bersarang berbilang peringkat juga tidak mempunyai kebolehbacaan yang baik. Contoh: Kembalikan 1 apabila syarat adalah benar, sebaliknya kembalikan 0:
const fn = (nBoolean) { if (nBoolean) { return 1 } else { return 0 } } // 使用三元运算符 const fn = (nBoolean) { return nBoolean ? 1 : 0 }
// num值在nBoolean为true时为10,否则为5 let num = nBoolean ? 10 : 5 // 求0-n之间的整数的和 let sum = 0; function add(n){ sum += n return n >= 2 ? add(n - 1) : result; }; let num = add(10);//55
Mengenai
, walaupun ia memang lebih mudah dibaca daripada, saya rasa semua orang rasa lebih menyusahkan untuk menulis (saya rasa menyusahkan pula). switch case
else if
Contoh: Terdapat empat jenis: A, B, C dan D. Apabila A dan B adalah output, 1 ialah output, C output 2 dan D output 3. Output lalai ialah 0.
let type = 'A' //if else if if (type === 'A' || type === 'B') { console.log(1); } else if (type === 'C') { console.log(2); } else if(type === 'D') { console.log(3); } else { console.log(0) } //switch case switch (type) { case 'A': case 'B': console.log(1) break case 'C': console.log(2) break case 'D': console.log(3); break; default: console.log(0) }
策略模式
Corak strategi merangkumi satu siri algoritma dan menjadikannya boleh ditukar ganti. Algoritma terkapsul adalah bebas dan ciri-cirinya tidak boleh diubah oleh dunia luar.
Seterusnya, kami akan menggunakan kaedah konfigurasi objek untuk melaksanakan contoh di atas
Seterusnya, kami akan menggunakan beberapa contoh untuk menjadikan semua orang lebih akrab.let type = 'A' let tactics = { 'A': 1, 'B': 1, 'C': 2, 'D': 3, default: 0 } console.log(tactics[type]) // 1
Gunakan
untuk melaksanakanif else
// 获取折扣 --- 使用if else const getDiscount = (userKey) => { if (userKey === '普通会员') { return 0.9 } else if (userKey === '年费会员') { return 0.85 } else if (userKey === '超级会员') { return 0.8 } else { return 1 } } console.log(getDiscount('普通会员')) // 0.9
// 获取折扣 -- 使用对象配置/策略模式 const getDiscount = (userKey) => { // 我们可以根据用户类型来生成我们的折扣对象 let discounts = { '普通会员': 0.9, '年费会员': 0.85, '超级会员': 0.8, 'default': 1 } return discounts[userKey] || discounts['default'] } console.log(getDiscount('普通会员')) // 0.9
Konfigurasi objek tidak semestinya perlu menggunakan objek untuk mengurus pasangan nilai kunci kami Anda juga boleh menggunakan
untuk mengurus?, seperti:Map
// 获取折扣 -- 使用对象配置/策略模式 const getDiscount = (userKey) => { // 我们可以根据用户类型来生成我们的折扣对象 let discounts = new Map([ ['普通会员', 0.9], ['年费会员', 0.85], ['超级会员', 0.8], ['default', 1] ]) return discounts.get(userKey) || discounts.get('default') } console.log(getDiscount('普通会员')) // 0.9
Jika Jabatan Kewangan memerlukan kami menyediakan sekeping kod untuk melaksanakan logik perakaunan ini, bagaimana kami melaksanakannya?
Bukankah ini sangat mudah?
Anda boleh mendapati bahawa kod ini sangat mudah, tetapi fungsiconst calculateBonus = (performanceLevel, salary) => { if (performanceLevel === 'A'){ return salary * 4 } if (performanceLevel === 'B'){ return salary * 3 } if (performanceLevel === 'C'){ return salary * 2 } } calculateBonus( 'B', 20000 ) // 输出:60000
Jika tahap prestasi baharu D ditambah. Atau tukar gandaan tahap A kepada 5, maka kita mesti membaca semua kod untuk membuat pengubahsuaian. calculateBonus
if else
Jadi kita boleh menggunakan corak konfigurasi/strategi objek untuk memudahkan fungsi ini
let strategies = new Map([ ['A', 4], ['B', 3], ['C', 2] ]) const calculateBonus = (performanceLevel, salary) => { return strategies.get(performanceLevel) * salary } calculateBonus( 'B', 20000 ) // 输出:60000
Ubah kod di atas, sambungkan nilai status, dan kemudian simpannya dalam Peta
// 以绩效_部门的方式拼接键值存入 let strategies = new Map([ ['A_D', 4 * 1.2], ['B_D', 3 * 1.2], ['C_D', 2 * 1.2], ['A_F', 4 * 0.9], ['B_F', 3 * 0.9], ['C_F', 2 * 0.9] ]) const calculateBonus = (performanceLevel, salary, department) => { return strategies.get(`${performanceLevel}_${department}`) * salary } calculateBonus( 'B', 20000, 'D' ) // 输出:72000
tidak bermaksud mendiskriminasi
, saya hanya berharap akan ada lebih daripada sekadar dalam kod masa hadapan anda. if else
if else
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: