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)

)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM