所谓无章可循,前端时间在团队code-review中发现,不同开发者在不同时期写的代码可谓五花八门。因此,我们提出了一些相关的代码规范,希望未来能够形成一个团队的编码规范。本文主要优化了一些JavaScript,使其更健壮、更易读、更易维护。gitthub地址:github.com/Michael-lzg...上一篇:code-review前端代码规范if判断优化JavaScript条件语句在我们平时的开发中不可避免的要用到,但是很多时候我们的代码写的并不好,一个一系列的if-else或者多次嵌套的判断会让代码非常臃肿,下面的例子进行了优化。需求:现在有4款产品,分别是手机、电脑、电视、游戏机。当然,每个产品显示的价格是不同的。1、最简单的方法:if判断letcommodity={phone:'手机',computer:'电脑',television:'电视机',gameBoy:'游戏机',}functionprice(name){if(name===commodity.phone){console.log(1999)}elseif(name===commodity.computer){console.log(9999)}elseif(name===commodity.television){console.log(2999)}elseif(name===commodity.gameBoy){console.log(3999)}}price('手机')//9999缺点:代码太长,对维护和阅读不友好2.更好的方法:Switchletcommodity={phone:'手机',computer:'电脑',television:'电视',gameBoy:'游戏机',}constprice=(name)=>{switch(name){casecommodity.phone:console.log(1999)breakcasecommodity.computer:console.log(9999)breakcasecommodity.television:console.log(2999)breakcasecommodity.gameBoy:console.log(3999)break}}price('mobilephone')//99993,更好的方法:策略模式策略模式使用了组合、委托、多态等技术和思想,可以有效避免多个条件选择语句。它对开闭原则提供了完美的支持,将算法封装在独立的策略中,使其易于切换、易于理解、易于扩展。constcommodity=newMap([['phone',1999],['computer',9999],['television',2999],['gameBoy',3999],])constprice=(name)=>{returncommodity.get(name)}price('phone')//1999的优化包括是ES7的新API。和indexOf不同的是includes直接返回布尔值,而indexOf返回索引值,数组和字符String都有includes方法。需求:我们实现一个身份认证方法,通过传入身份Id返回对应的验证结果传统方法functionverifyIdentity(identityId){if(identityId==1||identityId==2||identityId==3||identityId==4){return'您的身份合法,请通过!'}else{return'您的身份无效'}}includes优化函数verifyIdentity(identityId){if([1,2,3,4].includes(identityId)){return'您的身份合法,请通过!'}else{return'你的身份不合法'}}for循环在JavaScript中,我们可以使用for(),while(),for(in),for(in)几种循环,其实就是这三种for的效率(in)in循环极差,因为需要查询hashkey,所以尽量少用。for循环是最传统的语句,它以变量i作为索引对数组进行操作,以跟踪它被访问的位置。vararr=['a','b','c']for(vari=0;i '+i+'
