function isBetween( value, a, b, left, right ) {
	if ( arguments.length > 3 ) {
		if ( left !== 'closed' && left !== 'open' ) {
			throw new TypeError( format( 'invalid argument. Fourth argument must be one of the following: "%s". Value: `%s`.', [ 'closed', 'open' ].join( '", "' ), left ) );
		}
		if ( right !== 'closed' && right !== 'open' ) {
			throw new TypeError( format( 'invalid argument. Fifth argument must be one of the following: "%s". Value: `%s`.', [ 'closed', 'open' ].join( '", "' ), right ) );
		}
	}
	if ( left === 'closed' || left === void 0 ) {
		if ( right === 'closed' || right === void 0 ) {
			return ( value >= a && value <= b );
		}
		return ( value >= a && value < b );
	}
	if ( right === 'closed' || right === void 0 ) {
		return ( value > a && value <= b );
	}
	return ( value > a && value < b );
}
Tests if a value is between two values.

@param {*} value - value to test
@param {*} a - left comparison value
@param {*} b - right comparison value
@param {string} [left="closed"] - indicates whether the left comparison value is inclusive
@param {string} [right="closed"] - indicates whether the right comparison value is inclusive
@throws {TypeError} `left` must be a recognized string
@throws {TypeError} `right` must be a recognized string
@returns {boolean} boolean indicating whether a value is between two values

@example
var bool = isBetween( 3.14, 3.0, 4.0 );
// returns true

@example
var bool = isBetween( 4.5, 3.0, 4.0 );
// returns false

@example
var bool = isBetween( 3.14, 3.14, 4.0 );
// returns true

@example
var bool = isBetween( 3.14, 3.14, 4.0, 'open', 'closed' );
// returns false

@example
var bool = isBetween( 3.14, 3.0, 3.14 );
// returns true

@example
var bool = isBetween( 3.14, 3.0, 3.14, 'closed', 'open' );
// returns false