JS优化:善用二元运算符&& 、||、三元运算符?:代替传统的if

条件选择语句转换成三元运算符?:句式

句式一、

if(a) do_a

elseif(b) do_b

else do_c

转化为:

=>a ? do_a

: b ?do_b

: do_c

句式二、

if(a) do_a

转化为:

=> a &&do_a

句式三、

if(!a) do_a

转化为:

=> a || do_a

了解了上面的规则,再介绍一下在实际应用中的操作:

针对句式一实例:

if ( a.options.wrapperW ) {

a.wrapperW = a.options.wrapperW

}else if( a.options.wrapperW ){

a.wrapperW = a.wrapper.clientWidth

}else{

a.wrapperW= window.innerWidth

}

转换为:

a.wrapperW = a.options.wrapperW ?

a.options.wrapperW

:a.wrapper.clientWidth ? a.wrapper.clientWidth : window.innerWidth

针对句式二实例:

if(this.options.autoInit) {

this.refresh();

}

转化为

this.options.autoInit && this.refresh();

针对句式三实例:

if(!!b.endCallBack == false){

...

}

b.endCallBack || (…. )

当某条分支语句有多条代码的时候,我们可以借助刚才讲到的降低语句数的技巧来处理

Eg:

摘取base_hscroll.js中的一段代码:

b.endCallBack ||

b.options.enabled

&& (

b.options.onBeforeScrollStart&& b.options.onBeforeScrollStart.call(b, a)

,b.absDistX = 0

,b.absDistY = 0

, b.pointX= c.pageX

, b.pointY= c.pageY

,b.directionLocked = !1

,b.options.onSlideStart && b.options.onSlideStart.call(b, a)

,b._bind(MOVE_EV)

,b._bind(END_EV)

,b._bind(CANCEL_EV)

)
原文地址:https://www.cnblogs.com/Billzhizhi/p/5923283.html