详细解释if/if的替换.其他.在JavaScript中
说说if/if … else …,这是程序中最常用的流量判断语句。
面对曾经的全屏if/if.其他.我在想我能不能做点什么,折腾几波。
对于程来说,他的需求很简单,我不在乎如何实现,明天上线,答案一定是肯定的。
少写多做,学习进步的本质是更高效地偷懒。
废话少说,直接去方法总结,让我们一窥究竟:
开关覆盖如果
//如果版本var a=1;if(a1 a5){ Return 1 } else if(a5a 10){ Return 5 } else { Return 10 }//Switch更改为Switch(True){ Case(a1 a5): Return 1 Case(a5a 10)Switch的用法.情况.在上面的代码中,return 5默认值:return 10}在实践中很少使用,仅供参考。通常,当大小写不变时,切换.情况.被更多地使用。
当分支较多时,建议使用开关.案例来提高程序的效率。然而,开关的缺点是.case是它只能处理字符或数字类型的变量,如果.else更灵活,可以用来判断表达式是否有效。例如,如果(公元前),如果.else的应用范围更广。
三元运算符重写,如果
//if版本if(bool){ value=1;} else { value=2;}//三元运算符版本值=bool?1 : 2;//三元预算运算符的多个操作需要用括号括起来。这里,我们使用逗号表达式返回foo==='object '的类型?(console.log(1),1):(console.log(2),2);优点:代码简化,更清爽,写得更少
缺点:复杂的三元运算符可读性差,需要友好的注释
TIPS:三元运算符后面不能跟return//用法不正确,运算符后面不能跟returnbool?返回1 :返回2;逻辑判断and()和or(||)是否覆盖
原理:通过逻辑判断的短路运算实现
短路:如果中的第一个表达式为false,则第二个表达式不会被处理,| |则相反
//if为true if(bool){ value=GetYes();}//修订bool(value=GetYes());//if为false if(!bool){ value=getNo();} bool | |(value=GetNo());优点:代码简化,更清爽,写得更少
缺点:适用于简单的判断逻辑,复杂的判断操作可读性差,需要友好的注释
TIPS:适用于没有else的场景,逻辑运算符后面不能跟return
//用法错误,returnboll ||运算符符号后不能带return true-
知识点中断—— (1)
1.三元运算符和逻辑运算符都有一层返回函数,但它们不能作用于函数返回语句,所以像下面这样的用法是错误的;
//错误用法函数getResult(value) {value?是' : '否';} var result=GetResult(true);//将不返回任何值。1.在1.js逻辑运算中,0/''/null/false/undefined/NaN将被判定为false,其他全部为true;2.if(!Attr),为什么不直接写if(attr),其实这是一个比较严谨的写法!Attr被强制转换为布尔类型。类型的!Attr==true比attr==true的类型更严格。- .} else if(a==2){ return ' two ';} else if(a==3){ return ' three ';} else { return“”;}//对象属性修订varret={1: '一',2: '二',3: '三' };返回ret[a]?ret[a]:“”;小贴士:1。判断值应该是定值,如==,其他如=/=//不适用。2.由于条件是对象属性,所以需要注意对象属性的读取方法
-
知识点中断—— (2)
JS的命名规则(变量的命名规则)
标识符只能由字母、数字、下划线和“$”组成。数字不能用作标识符的第一个字符
对象属性的命名规则
•通过[]操作符为对象添加属性时,属性名可以是任何字符串(包括只包含空格的字符串和空字符串);•通过。操作符为对象添加属性时,属性名必须是合法的标识符名称;•如果属性名包含非法的标识符字符,则只能采用obj["propertyName"]的形式;•如果属性名是合法的标识符,读取时可采用obj.propertyName或obj["propertyName"]的形式;
-
策略模式
策略模式:定义一系列的算法,把它们一个个封装起来,目的就是将算法的使用与算法的实现分离开来
以下为常见的表单验证,用策略模式来构建,替换如果.其他的方式
//htmlform id='registerForm '方法='post '操作='http://xxxx.com/api/register '用户名:输入类型="文本"名称="用户名"密码:输入类型="文本"名称="密码"手机号码:输入类型='文本'名称='电话号码'按钮类型='提交'提交/button/form//js//策略对象var strategies={ isno先占:函数(值,错误消息){ if(值==' '){返回错误消息;} },isNoSpace:函数(值,错误消息){ if(值。trim()===' '){返回错误消息;} },minLength:函数(值,长度,errorMsg) { if (value.trim().长度长度){ return errorMsg} },maxLength:函数(值,长度,错误消息){ if(值。长度长度){返回错误消息;} },isMobile:函数(值,errorMsg) { if(!/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|17[7]|18[0|1|2|3|5|6|7|8|9])\d{8}$/.test(value)){返回错误消息;} }}//验证类var Validator=function(){ this。cache=[];}验证器。原型。add=function(DOM,rules){ var self=this;对于(var i=0,规则;规则=规则[I];){(函数(规则){ var strategyAry=rule。策略。拆分(' : ');var错误消息=规则。错误消息;自我。缓存。push(function(){ var strategy=strategy。shift();战略。unshift(DOM)。值);战略。推送(错误消息);回报策略。应用(dom,strategyAry);}) })(规则)} };验证器。原型。start=function(){ for(var I=0,validatorFuncvalidatorFunc=this。缓存[I];){ var error msg=validatorFunc();if(错误消息){返回错误消息;} }};//调用代码var登记表=文档。getelementbyid('注册表单');var validataFunc=function(){ var Validator=new Validator();验证器。添加(登记表。用户名,[{ strategy : '不是空的',错误Msg: '用户名不可为空},{ strategy: 'isNoSpace ',errorMsg: '不允许以空白字符命名},{ strategy: 'minLength:2 ',errorMsg: '用户名长度不能小于2位' }]);验证器。添加(登记表。密码,[{ strategy : ' min length :6 ',errorMsg: '密码长度不能小于6位' }]);验证器。添加(登记表。电话号码,[{ strategy: 'isMobile ',errorMsg: '请输入正确的手机号码格式' }]);var错误消息=验证器。start();返回错误消息;}注册表单。onsubmit=function(){ var error msg=validataFunc();if(错误消息){ alert(错误消息);返回false}}:第一个部分是一组策略类,策略类封装了具体的算法,并负责具体的计算过程;•第二个部分是环境类背景,该语境接收客户端的请求,随后把请求委托给某一个策略类;
优点:
1.有效避免多重条件选择语句2.提供了对外开放-封装原则的完美支持,将方法封装在独立的战略中,使得它们易于切换、易于理解、易于扩展。3.复用性
缺点:
1.增加了策略类/对象的使用2.使用策略模式,必须先了解所有的策略,违反了最少知识原则
总结
以上所述是小编给大家介绍的Java脚本语言中如果/如果.其他.替换方式,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
版权声明:详细解释if/if的替换.其他.在JavaScript中是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。