import { curryN } from 'ramda'; import isFunction from './isFunction'; import ponyfill from './internal/ponyfills/Number.isNaN'; export const isNaNPonyfill = curryN(1, ponyfill); /** * Checks whether the passed value is `NaN` and its type is `Number`. * It is a more robust version of the original, global isNaN(). * * * @func isNaN * @memberOf RA * @since {@link https://char0n.github.io/ramda-adjunct/0.6.0|v0.6.0} * @category Type * @sig * -> Boolean * @param {*} val The value to test * @return {boolean} * @see {@link RA.isNotNaN|isNotNaN} * @example * * RA.isNaN(NaN); // => true * RA.isNaN(Number.NaN); // => true * RA.isNaN(0 / 0); // => true * * // e.g. these would have been true with global isNaN(). * RA.isNaN('NaN'); // => false * RA.isNaN(undefined); // => false * RA.isNaN({}); // => false * RA.isNaN('blabla'); // => false * * RA.isNaN(true); // => false * RA.isNaN(null); // => false * RA.isNaN(37); // => false * RA.isNaN('37'); // => false * RA.isNaN('37.37'); // => false * RA.isNaN(''); // => false * RA.isNaN(' '); // => false */ const _isNaN = isFunction(Number.isNaN) ? curryN(1, Number.isNaN) : isNaNPonyfill; export default _isNaN;