条件选择语句转换成三元运算符?:句式
句式一、
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) )