isNumber.js 1.0 KB

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