UNPKG

ut2

Version:

一个现代 JavaScript 实用工具库。[点击查看在线文档]。

28 lines (24 loc) 726 B
'use strict'; var isObject = require('./isObject.js'); var isSymbol = require('./isSymbol.js'); var reIsBinary = /^0b[01]+$/i; var reIsOctal = /^0o[0-7]+$/i; var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; function toNumber(value) { if (typeof value === 'number') { return value; } if (isSymbol(value)) { return NaN; } if (isObject(value)) { value = Number(value); } if (typeof value !== 'string') { return value === 0 ? value : +value; } value = value.trim(); var isBinary = reIsBinary.test(value); return isBinary || reIsOctal.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NaN : +value; } module.exports = toNumber;