isNumber.js 1.1 KB

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