如何用循环简化JavaScript中的多分支if语句?新手技术求助
简化多分支if的解决方案
先梳理你的代码逻辑:当prestige_plus为n时,对应操作的乘数是n+1——比如prestige_plus=2时乘数是3,prestige_plus=3时乘数是4,以此类推。基于这个规律,完全可以抛弃重复的多分支if,用更简洁的方式实现,甚至可以按需用循环处理扩展场景。
方案1:直接计算乘数(最简洁高效)
不需要循环或多个判断,直接根据prestige_plus的值算出乘数,统一执行操作即可:
prestige_btn.addEventListener('click', function(){ // 先判断值是否在有效范围内(当前是2-7,后续扩展只需修改这里的数值) if(prestige_plus >= 2 && prestige_plus <= 7){ const multiplier = prestige_plus + 1; taxi_pro_sec *= multiplier; gartenArbeit_all_five_sec *= multiplier; zeitungAustragen *= multiplier; mehrLimoStände += multiplier; } });
方案2:用循环批量处理变量(适合后续变量增多的场景)
如果后续要操作的变量越来越多,可以把需要乘的变量存入对象,通过循环批量更新,避免重复写赋值语句:
prestige_btn.addEventListener('click', function(){ if(prestige_plus >= 2 && prestige_plus <= 7){ const multiplier = prestige_plus + 1; // 把需要乘的变量放到对象里,方便循环处理 const calcVars = { taxi_pro_sec, gartenArbeit_all_five_sec, zeitungAustragen }; // 循环更新所有需要乘的变量 for(const key in calcVars){ calcVars[key] *= multiplier; } // 将更新后的值同步回原变量 taxi_pro_sec = calcVars.taxi_pro_sec; gartenArbeit_all_five_sec = calcVars.gartenArbeit_all_five_sec; zeitungAustragen = calcVars.zeitungAustragen; // 单独处理加法的变量 mehrLimoStände += multiplier; } });
为什么要这么改?
原来的多分支写法重复代码过多,后续新增prestige_plus的取值时,每次都要复制粘贴相似代码,不仅繁琐还容易漏改或写错。上面的两种方式,不管后续扩展到多大的数值范围,只需要调整判断的边界值即可,无需新增重复逻辑。
内容的提问来源于stack exchange,提问作者B34Rocky
相关产品推荐
相关产品推荐

