foop
Version:
interfaces that describe their intentions.
56 lines (54 loc) • 3.36 kB
JavaScript
var isNullOrUndefined = require('./nullOrUndefined')
var isNotEhNumber = require('./NaN')
/**
* @desc ensure a value is not nill, or nan
* @param {*} x value
* @return {boolean} x isReal
*
* @since 3.0.0
* @memberOf is
* @see is/null
* @see is/undefined
*
* @see http://2ality.com/2013/04/quirk-implicit-conversion.html
* @see https://javascriptrefined.io/nan-and-typeof-36cd6e2a4e43
* @see https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/isNaN
*
* @NOTE eslint-disable-next-line no-self-compare
* && x !== x
*
* @func
* @name isReal
* @extends isNullOrUndefined
* @variation *not* isNullOrUndefined && false for NaN
*
* @example
*
* isReal(null)
* //=> false
* isReal(void 0)
* //=> false
* const nan = Number(undefined)
* isReal(nan)
* //=> false
*
* isReal({eh: true})
* //=> true
* isReal({})
* //=> true
* isReal(Object)
* //=> true
* isReal([])
* //=> true
* isReal(new Set())
* //=> true
* isReal(function() {})
* //=> true
* isReal('')
* //=> true
* isReal(1)
* //=> true
*
*/
module.exports = function (x) { return !isNullOrUndefined(x) && !isNotEhNumber(x); }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbC5qcyIsInNvdXJjZXMiOlsicmVhbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4vbnVsbE9yVW5kZWZpbmVkJylcbmNvbnN0IGlzTm90RWhOdW1iZXIgPSByZXF1aXJlKCcuL05hTicpXG5cbi8qKlxuICogQGRlc2MgZW5zdXJlIGEgdmFsdWUgaXMgbm90IG5pbGwsIG9yIG5hblxuICogQHBhcmFtIHsqfSB4IHZhbHVlXG4gKiBAcmV0dXJuIHtib29sZWFufSB4IGlzUmVhbFxuICpcbiAqIEBzaW5jZSAzLjAuMFxuICogQG1lbWJlck9mIGlzXG4gKiBAc2VlIGlzL251bGxcbiAqIEBzZWUgaXMvdW5kZWZpbmVkXG4gKlxuICogQHNlZSBodHRwOi8vMmFsaXR5LmNvbS8yMDEzLzA0L3F1aXJrLWltcGxpY2l0LWNvbnZlcnNpb24uaHRtbFxuICogQHNlZSBodHRwczovL2phdmFzY3JpcHRyZWZpbmVkLmlvL25hbi1hbmQtdHlwZW9mLTM2Y2Q2ZTJhNGU0M1xuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9pc05hTlxuICpcbiAqIEBOT1RFIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAqICAgICAgICYmIHggIT09IHhcbiAqXG4gKiBAZnVuY1xuICogQG5hbWUgaXNSZWFsXG4gKiBAZXh0ZW5kcyBpc051bGxPclVuZGVmaW5lZFxuICogQHZhcmlhdGlvbiAqbm90KiBpc051bGxPclVuZGVmaW5lZCAmJiBmYWxzZSBmb3IgTmFOXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgaXNSZWFsKG51bGwpXG4gKiAgLy89PiBmYWxzZVxuICogIGlzUmVhbCh2b2lkIDApXG4gKiAgLy89PiBmYWxzZVxuICogIGNvbnN0IG5hbiA9IE51bWJlcih1bmRlZmluZWQpXG4gKiAgaXNSZWFsKG5hbilcbiAqICAvLz0+IGZhbHNlXG4gKlxuICogIGlzUmVhbCh7ZWg6IHRydWV9KVxuICogIC8vPT4gdHJ1ZVxuICogIGlzUmVhbCh7fSlcbiAqICAvLz0+IHRydWVcbiAqICBpc1JlYWwoT2JqZWN0KVxuICogIC8vPT4gdHJ1ZVxuICogIGlzUmVhbChbXSlcbiAqICAvLz0+IHRydWVcbiAqICBpc1JlYWwobmV3IFNldCgpKVxuICogIC8vPT4gdHJ1ZVxuICogIGlzUmVhbChmdW5jdGlvbigpIHt9KVxuICogIC8vPT4gdHJ1ZVxuICogIGlzUmVhbCgnJylcbiAqICAvLz0+IHRydWVcbiAqICBpc1JlYWwoMSlcbiAqICAvLz0+IHRydWVcbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0geCA9PiAhaXNOdWxsT3JVbmRlZmluZWQoeCkgJiYgIWlzTm90RWhOdW1iZXIoeClcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDdERBLEdBQUssQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9EdEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxVQUFBLENBQUMsQ0FBQSxDQUFDLEFBQUcsU0FBQSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFBOyJ9