当前位置: 首页 > news >正文

北京做网站建设多少钱/seo优化推广

北京做网站建设多少钱,seo优化推广,wordpress用什么数据库,代办公司注册流程及材料本文主要是向大家传递一种思想,我们有很多的方法去优化我们的代码,提高我们代码的可读性。相信大家或多或少都接触过拥有庞大 if else 的项目代码吧,多重嵌套的 if else 在维护的时候真的让人很恼火😡,有时候一个 bug …

        本文主要是向大家传递一种思想,我们有很多的方法去优化我们的代码,提高我们代码的可读性。相信大家或多或少都接触过拥有庞大 if else 的项目代码吧,多重嵌套的 if else 在维护的时候真的让人很恼火😡,有时候一个 bug 排查下来,严重感觉身体被掏空😿。

1.逻辑 "||"

        Javascript 的逻辑或 || 的短路运算有时候可以用来代替一些比较简单的 if else

  • 逻辑或 || 的短路运算:若左边能转成true,返回左边式子的值,反之返回右边式子的值。

推荐✅

let c
if(a){c = a
} else {c = b
}
复制代码

不推荐❌

let c = a || b
复制代码

2.三元运算符  

        三元运算符我觉得大家应该都很熟悉吧,很多时候简单的一些判断我们都可以使用三元运算符去替代 if else,这里只推荐 一层 三元运算符,因为多层嵌套的三元运算符也不具备良好的可读性。

例子:条件为 true 时返回1,反之返回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 += nreturn n >= 2 ? add(n - 1) : result;
};
let num = add(10);//55
复制代码

3.switch case 

        上述的两种方式:短路运算跟三元运算虽然很好用,代码也很简洁,不过都只能用于简单的判断,遇到多重条件判断就不能使用了😭。

对于 switch case,虽然它的可读性确实比 else if 更高,但是我想大家应该都觉得它写起来比较麻烦吧😣。

例:有A、B、C、D四种种类型,在A、B的时候输出1,C输出2、D输出3,默认输出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)breakcase 'C':console.log(2)breakcase 'D':console.log(3);break;default:console.log(0)
}
复制代码

4.对象配比/策略模式 

        对象配置看起来跟 策略模式 差不多,都是根据不同得参数使用不同得数据/算法/函数。策略模式就是将一系列算法封装起来,并使它们相互之间可以替换。被封装起来的算法具有独立性,外部不可改变其特性。

接下来我们用对象配置的方法实现一下上述的例子

let type = 'A'let tactics = {'A': 1,'B': 1,'C': 2,'D': 3,default: 0
}
console.log(tactics[type]) // 1
复制代码

接下来用几个例子让大家更加熟悉一点。

案例1 商场促销价🙋

        根据不同的用户使用不同的折扣,如:普通用户不打折,普通会员用户9折,年费会员8.5折,超级会员8折。

使用if 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
复制代码

从上面的案列中可以明显看得出来,使用对象配置比使用if else可读性更高,后续如果需要添加用户折扣也只需要修改折扣对象就行👍。

对象配置不一定非要使用对象去管理我们键值对,还可以使用 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
复制代码

案例2 年终奖🏆

        公司的年终奖根据员工的工资基数和绩效等级来发放的。例如,绩效为A的人年终奖有4倍工资,绩效为B的有3倍,绩效为C的只有2倍。

假如财务部要求我们提供一段代码来实现这个核算逻辑,我们要怎么实现呢?

这不是很简单嘛,一个函数就搞定了。

const 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
复制代码

可以发现,这段代码十分简单,但是 calculateBonus函数比较庞大,所有的逻辑分支都包含在if else语句中,如果增加了一种新的绩效等级D,或者把A等级的倍数改成5,那我们必须阅读所有代码才能去做修改🙇‍♂️。

所以我们可以用对象配置/策略模式去简化这个函数😺

let strategies = new Map([['A', 4],['B', 3],['C', 2]
])
const calculateBonus = (performanceLevel, salary) => { return strategies.get(performanceLevel) * salary
}
calculateBonus( 'B', 20000 ) // 输出:60000
复制代码

至此,这个需求做完了,然后产品经理说要加上一个部门区分,假设公司有两个部门D和F,D部门的业绩较好,所以年终奖翻1.2倍😄,F部门的业绩较差,年终奖打9折😭。

改造以上代码,把状态值拼接,然后存入Map中

// 以绩效_部门的方式拼接键值存入
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
复制代码

原文地址:https://juejin.cn/post/715353631885990301

http://www.lbrq.cn/news/941203.html

相关文章:

  • 建站快车凡科/东莞网站seo公司哪家大
  • 上海专业做网站的公司/友情链接推广
  • 东营网站seo/宣传软文案例
  • 网站建设 电子商务网站开发/怎么免费做网站
  • wordpress多网站建设/好的产品怎么推广语言
  • 网站建设好如何开通/搜索引擎推广和优化方案
  • 做网站备完备案需要干什么/网络营销的六大特征
  • 中国商标交易官网/郑州seo优化
  • 济南天桥区做网站的/最好的营销策划公司
  • 深圳网站建设培训/微信客户管理
  • 北京国税局网站官网入口/seo就业指导
  • arttemplate做电商网站/b2b网站有哪些
  • 展览网站制作/百度指数查询工具app
  • 免费发布信息平台网/网站seo快速优化
  • 制作网站需要怎么做/微博推广技巧
  • wordpress如何做导航网站/济南市最新消息
  • 泰安做网站网络公司/北京营销公司排行榜
  • 进口食品销售销售在那个网站做/江苏网站开发
  • 做书的封面网站/如何成为百度广告代理商
  • 公众号平台网站开发/怎样建立自己的网站平台
  • 企业网站 带后台/注册查询网站
  • 电商网站建设小兔仙/电话营销外包公司
  • 人力招聘网站建设的简要任务执行书/什么是seo什么是sem
  • 信阳做网站的公司/搜狗搜索引擎入口
  • 济宁网站建设神华科技/新区快速seo排名
  • 网站项目的流程/友情链接的四个技巧
  • 域名解析过程/网站seo关键词优化
  • 自学网页设计要多久/小红书seo关键词优化多少钱
  • 合肥电商网站开发/排行榜前十名
  • c2c网站开发/百度app内打开
  • Go的管道——channel
  • 【Bluedroid】btif_av_sink_execute_service之服务器禁用源码流程解析
  • 详解力扣高频SQL50题之1141. 查询近30天活跃用户数【简单】
  • Android Studio 提示信息 ‘equals(““)‘ can be replaced with ‘isEmpty()‘
  • leetcode933最近的请求次数
  • OpenCV 图像变换全解析:从镜像翻转到仿射变换的实践指南