zoukankan      html  css  js  c++  java
  • 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)
    
    )
    
  • 相关阅读:
    CF982E Billiard
    CF385E Bear in the Field
    CF1322C Instant Noodles
    CF359C Prime Number
    CF1117E Decypher the String
    模板整合计划 写了一点qwq慢慢补
    BZOJ 4320
    acwing91:最短哈密顿路径
    P3469 [POI2008]BLO-Blockade
    简易平衡树
  • 原文地址:https://www.cnblogs.com/Billzhizhi/p/5923283.html
Copyright © 2011-2022 走看看