Only problem I had with @CMS's [answer](http://stackoverflow.com/a/1830844/623735) is the exclusion of NaN and Infinity, which are useful numbers for many situations. One way to check for NaN's is to check for numeric values that don't equal themselves, `NaN != NaN`!  So there are really 3 tests you'd like to deal with ...

    function isNumber(n) {
      n = parseFloat(n);
      return !isNaN(n) || n != n;
    }
    function isFiniteNumber(n) {
      n = parseFloat(n);
      return !isNaN(n) && isFinite(n);
    }    
    function isComparableNumber(n) {
      n = parseFloat(n);
      return (n >=0 || n < 0);
    }

    isFiniteNumber('NaN')
    false
    isFiniteNumber('OxFF')
    true
    isNumber('NaN')
    true
    isNumber(1/0-1/0)
    true
    isComparableNumber('NaN')
    false
    isComparableNumber('Infinity')
    true

My isComparableNumber is pretty close to another elegant [answer](http://stackoverflow.com/a/1561597/623735), but handles hex and other string representations of numbers.