You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							64 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							64 lines
						
					
					
						
							1.5 KiB
						
					
					
				var baseTrim = require('./_baseTrim'), | 
						|
    isObject = require('./isObject'), | 
						|
    isSymbol = require('./isSymbol'); | 
						|
 | 
						|
/** Used as references for various `Number` constants. */ | 
						|
var NAN = 0 / 0; | 
						|
 | 
						|
/** Used to detect bad signed hexadecimal string values. */ | 
						|
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; | 
						|
 | 
						|
/** Used to detect binary string values. */ | 
						|
var reIsBinary = /^0b[01]+$/i; | 
						|
 | 
						|
/** Used to detect octal string values. */ | 
						|
var reIsOctal = /^0o[0-7]+$/i; | 
						|
 | 
						|
/** Built-in method references without a dependency on `root`. */ | 
						|
var freeParseInt = parseInt; | 
						|
 | 
						|
/** | 
						|
 * Converts `value` to a number. | 
						|
 * | 
						|
 * @static | 
						|
 * @memberOf _ | 
						|
 * @since 4.0.0 | 
						|
 * @category Lang | 
						|
 * @param {*} value The value to process. | 
						|
 * @returns {number} Returns the number. | 
						|
 * @example | 
						|
 * | 
						|
 * _.toNumber(3.2); | 
						|
 * // => 3.2 | 
						|
 * | 
						|
 * _.toNumber(Number.MIN_VALUE); | 
						|
 * // => 5e-324 | 
						|
 * | 
						|
 * _.toNumber(Infinity); | 
						|
 * // => Infinity | 
						|
 * | 
						|
 * _.toNumber('3.2'); | 
						|
 * // => 3.2 | 
						|
 */ | 
						|
function toNumber(value) { | 
						|
  if (typeof value == 'number') { | 
						|
    return value; | 
						|
  } | 
						|
  if (isSymbol(value)) { | 
						|
    return NAN; | 
						|
  } | 
						|
  if (isObject(value)) { | 
						|
    var other = typeof value.valueOf == 'function' ? value.valueOf() : value; | 
						|
    value = isObject(other) ? (other + '') : other; | 
						|
  } | 
						|
  if (typeof value != 'string') { | 
						|
    return value === 0 ? value : +value; | 
						|
  } | 
						|
  value = baseTrim(value); | 
						|
  var isBinary = reIsBinary.test(value); | 
						|
  return (isBinary || reIsOctal.test(value)) | 
						|
    ? freeParseInt(value.slice(2), isBinary ? 2 : 8) | 
						|
    : (reIsBadHex.test(value) ? NAN : +value); | 
						|
} | 
						|
 | 
						|
module.exports = toNumber;
 | 
						|
 |