Testing if a value is an integer in Javascript

I decided to post this article after doing a Google search for "Javascript is_int()" and "Javascript integer test" on Google.

I got plenty of results back, but each result that I looked at contained a function which don't always work as intended, either because the logic was flawed, or because it won't work with variables which are typed as a string, such as form input values.

Let me explain...

Javascript is_int() function example 1

Some sites proposed a solution which involved doing a pattern matching each for a decimal point in the variable. Something along the lines of this:

function is_int(value){
   for (i = 0 ; i < value.length ; i++) {
      if ((value.charAt(i) < '0') || (value.charAt(i) > '9')) return false 
    }
   return true;
}

Why this won't work

If I enter 1.00 or 2.00 as my variable, the function will return false, even though the number I entered is in fact an integer.

Javascript is_int() function example 2

Some solutions propose doing a parseInt() on the value, and returning false if this is NaN:

function is_int(value){
   return !isNaN(parseInt(value * 1))
}

Why this won't work

Whilst this will work with standard floats and integers, it won't work with string values (for example, form submission data).

Finally: a Javascript is_int() function which WORKS:

If the value of a variable is an integer, then the numeric value of it's parseFloat() and parseInt() equivalents will be the same, so:

function is_int(value){
  if((parseFloat(value) == parseInt(value)) && !isNaN(value)){
      return true;
  } else {
      return false;
  }
}

NOTE: the above function uses WEAK VARIABLE TYPING - if you need to check is_int() using strong variable typing, just use example 2 instead.

There you go. If you can find fault with me on this, let me know.