Use PHP functions in JavaScript

JavaScript is_nan

Returns whether argument is not a number

1
2
3
4
56
7
8
9
1011
12
13
14
1516
17
18
19
2021
22
23
24
2526
27
28
29
3031
function is_nan (val) {
    // Returns whether argument is not a number  
    // 
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/is_nan    // +   original by: Onno Marsman
    // +      input by: Robin
    // *     example 1: is_nan(NaN);
    // *     returns 1: true
    // *     example 2: is_nan(0);    // *     returns 2: false
    var warningType = '';
 
    if (typeof val == 'number' && isNaN(val)) {
        return true;    }
 
    //Some errors for maximum PHP compatibility
    if (typeof val == 'object') {
        warningType = (Object.prototype.toString.call(val) === '[object Array]' ? 'array' : 'object');    }
    else if (typeof val == 'string' && !val.match(/^[\+\-]?\d/)) {
        //simulate PHP's behaviour: '-9a' doesn't give a warning, but 'a9' does.
        warningType = 'string';
    }    if (warningType) {
        throw new Error('Warning: is_nan() expects parameter 1 to be double, ' + warningType + ' given');
    }
 
    return false;}
external links: original PHP docs | raw js source

Examples

» Example 1

Running

1
is_nan(NaN);

Should return

1
true

» Example 2

Running

1
is_nan(0);

Should return

1
false

Dependencies

No dependencies, you can use this function standalone.

Open syntax issues

php.js uses JsLint to help us keep our code consistent and prevent some common bugs.

Eventually we want all code to pass or at least take into consideration most fixes suggested by JsLint, following this JsLint configuration we’ve decided on.


Authors

Thanks to the following developers, you get to have is_nan goodness in JavaScript.

Comments

Add Comment
Use:
[CODE]
your_stuff('here');
[/CODE]
for proper code formatting
By submitting code here you are allowing us to use it in php.js hence dual licensing it under the MIT and GPL licenses

Gravatar
Robin
28 Oct '08 Permalink

q  I'm sorry I was a douche :(

Gravatar
Onno Marsman
10 Oct '08 Permalink

q  Never really thought of using a regular expression to test whether a string would result in an error and you're right: that would probably be a lot better. Feel free to post your suggestion, otherwise I'll have a look at it myself tomorrow.

Furthermore: is_nan in PHP behaves very differently from isNaN in javascript. Javascripts isNaN is more like the opposite of PHPs is_numeric function (Just have a look at the implementation of is_numeric in this library). So a simple wrapper to isNaN won't suffice and the extra check for the number type is needed.

The rest of the code in this function is just to generate errors in the same way PHP does. And the suggested regular expression will, of course, make this code a lot shorter.

Note that is_finite and is_infinite both contain the exact same error code. I will fix this too.

Gravatar
Kevin van Zonneveld
10 Oct '08 Permalink

q  @ Robin: I agree that this may look a bit elaborate, but if I remember correctly, Onno Marsman had some very good reasons for implementing it this way. I'll ask him to comment you on the specifics.

Gravatar
Robin
10 Oct '08 Permalink

q  ... I'm sorry but this is laughable.

isNaN duplicates this functionality. Just write a wrapper.

If you're really bothered, a simple regexp could also do the trick just as easily. This is just getting on the edge of silly now.


Contribute a New function

More functions

In this category

abs
acos
acosh
asin
asinh
atan
atan2
atanh
base_convert
bindec
ceil
cos
cosh
decbin
dechex
decoct
deg2rad
exp
expm1
floor
fmod
getrandmax
hexdec
hypot
is_finite
is_infinite
» is_nan
lcg_value
log
log10
log1p
max
min
mt_getrandmax
mt_rand
octdec
pi
pow
rad2deg
rand
round
sin
sinh
sqrt
tan
tanh

Support us

spread the word:


Use any PHP function in JavaScript


These kind folks have already donated: AYHAN BARI*, Nikita Ekshiyan, Nikita Ekshiyan, Petr Pavel, @HalfWinter, Paulo Freitas, Andros Peña Romo, @andorosu, Raimund Szabo, Nitin Gupta, @nikosdion, Anonymous, Anonymous and Shawn Houser.
<your name here>

Click here to lend your support to: phpjs and make a donation at www.pledgie.com !