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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

)

以上是关于JS优化:善用二元运算符&& ||三元运算符?:代替传统的if的主要内容,如果未能解决你的问题,请参考以下文章

二元运算符返回 Xvalue 而不是 PRvalue?

二元运算 100 * 2 << 20

golang的位运算操作符的使用

二元加运算符对 C 中的 int Array 做了啥

php-运算符

二项式定理&反演证明&bzoj2839集合计数题解