code: function effectiveScrollbarWith ( $elem, axis ) {
  
          var queryHorizontal, queryVertical, queryBoth, elemHasScrollbar, horizontal, vertical,
              globalWidth = $.scrollbarWidth();
  
          axis || ( axis = "both" );
  
          queryBoth = axis === "both";
          queryHorizontal = axis === "horizontal" || queryBoth;
          queryVertical = axis === "vertical" || queryBoth;
  
          if ( axis !== "horizontal" && axis !== "vertical" && axis !== "both" ) throw new Error( "Invalid parameter value: axis = " + axis );
          if ( ! $elem.length ) return;
  
          // Bail out early, without an $elem.hasScrollbar() query, if scroll bars don't take up any space.
          if ( globalWidth === 0 ) return queryBoth ? { horizontal: 0, vertical: 0 } : 0;
  
          elemHasScrollbar = queryBoth ? hasScrollbar( $elem ) : queryHorizontal ? { horizontal: hasScrollbar( $elem, "horizontal" ) } : { vertical: hasScrollbar( $elem, "vertical" ) };
  
          if ( queryHorizontal ) horizontal = elemHasScrollbar.horizontal ? globalWidth : 0;
          if ( queryVertical ) vertical = elemHasScrollbar.vertical ? globalWidth : 0;
  
          return queryBoth ? { horizontal: horizontal, vertical: vertical } : queryHorizontal ? horizontal : vertical;
  
      }
docs: Does the actual work of $.fn.scrollbarWidth. Protected from external modification. See $.fn.scrollbarWidth for
  details.
  
  @param   {jQuery} $elem
  @param   {string} [axis="both"]  values "horizontal", "vertical", "both"
  @returns {number|Object}