What is the difference between (NaN != NaN) & (NaN !== NaN)?

NaN as in most programming languages means Not A Number. It belongs to the numeric data types(int, long, short, etc). It represents a numeric value that can not be interpreted as a finite value. That is one can not define its value. The use of NaN is quite rare. NaN is a property of the global object and number object. Its basically use to check the user’s numeric input and thus make the program error-free.

In JavaScript, this question arises that what is the difference between NaN!=NaN and NaN!==NaN? The answer to this question is that for the purpose of NaN, both of them produce the same answer. Both will result in true. This is due to the variable values of NaN. NaN is not equal to NaN.

  • Code 1:
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <script type="text/javascript">
    var value1 = Math.sqrt( -0.5 );
            document.write("First Value : " + value1 );
    var value2 = Math.sqrt( -49 );
            document.write("<br />Second Value : " + value2 );
    var boo= value1!==value2
            document.write("<br />Nan!==Nan: "+boo);
    var boo= value1!=value2
            document.write("<br />Nan!=Nan: "+boo);
    </script>                    

    chevron_right

    
    

  • Output:
    First Value : NaN
    Second Value : NaN
    Nan!==Nan: true
    Nan!=Nan: true
  • Code 2: Now in the first example we clearly know that we can not calculate the square root of negative numbers and so it leads to NaN. We can clearly see the output.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <script type="text/javascript"
    var x="Hello";
        document.write("<br />"+ isNaN(x) + "<br />"); 
    var y="World"
        document.write(isNaN(y)+"<br />");
    document.write(y!==x);
    document.write("<br />");
    document.write(y!=x);
    </script>                    

    chevron_right

    
    

  • Output:
    true
    true
    true
    true

Now there are two ways of checking the desired input is NaN. The first method to check is isNaN() and the other is Number.isNaN(). The second method is for numeric data types only. the first method is demonstrated in Code 2. The String variable is non-numeric and hence you will get the output as true(i.e. its a NaN).



Difference between NaN!=Nan and NaN!==NaN:

  • The main difference is not on the NaN it’s on the operator single = compare(NaN!=NaN) only the value which is not equal for each NaN
  • In the NaN!==Nan compare the type of the value also so the defference is clear now.


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.