toFinite.js
 1  var toNumber = require('./toNumber');
 2  
 3  /** Used as references for various `Number` constants. */
 4  var INFINITY = 1 / 0,
 5      MAX_INTEGER = 1.7976931348623157e+308;
 6  
 7  /**
 8   * Converts `value` to a finite number.
 9   *
10   * @static
11   * @memberOf _
12   * @since 4.12.0
13   * @category Lang
14   * @param {*} value The value to convert.
15   * @returns {number} Returns the converted number.
16   * @example
17   *
18   * _.toFinite(3.2);
19   * // => 3.2
20   *
21   * _.toFinite(Number.MIN_VALUE);
22   * // => 5e-324
23   *
24   * _.toFinite(Infinity);
25   * // => 1.7976931348623157e+308
26   *
27   * _.toFinite('3.2');
28   * // => 3.2
29   */
30  function toFinite(value) {
31    if (!value) {
32      return value === 0 ? value : 0;
33    }
34    value = toNumber(value);
35    if (value === INFINITY || value === -INFINITY) {
36      var sign = (value < 0 ? -1 : 1);
37      return sign * MAX_INTEGER;
38    }
39    return value === value ? value : 0;
40  }
41  
42  module.exports = toFinite;