1var isObjectLike = require('../internal/isObjectLike'); 2 3/** `Object#toString` result references. */ 4var numberTag = '[object Number]'; 5 6/** Used for native method references. */ 7var objectProto = Object.prototype; 8 9/** 10 * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) 11 * of values. 12 */ 13var objToString = objectProto.toString; 14 15/** 16 * Checks if `value` is classified as a `Number` primitive or object. 17 * 18 * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified 19 * as numbers, use the `_.isFinite` method. 20 * 21 * @static 22 * @memberOf _ 23 * @category Lang 24 * @param {*} value The value to check. 25 * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. 26 * @example 27 * 28 * _.isNumber(8.4); 29 * // => true 30 * 31 * _.isNumber(NaN); 32 * // => true 33 * 34 * _.isNumber('8.4'); 35 * // => false 36 */ 37function isNumber(value) { 38 return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag); 39} 40 41module.exports = isNumber; 42 43