條件選擇語句轉換成三元運算符?:句式
句式一、
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) )