Check whether variable is number or string in JavaScript

Does anyone know how can I check whether a variable is a number or a string in JavaScript?


  • If you're dealing with literal notation, and not constructors, you can use typeof:.

    typeof "Hello World"; // string
    typeof 123;           // number

    If you're creating numbers and strings via a constructor, such as var foo = new String("foo"), you should keep in mind that typeof may return object for foo.

    Perhaps a more foolproof method of checking the type would be to utilize the method found in underscore.js (annotated source can be found here),

    var toString = Object.prototype.toString;
    _.isString = function (obj) {
      return == '[object String]';

    This returns a boolean true for the following:

    _.isString("Jonathan"); // true
    _.isString(new String("Jonathan")); // true