Skip to main content

JavaScript: Check Data Type with Examples

Checking Data Types in JavaScript

In JavaScript, it's important to know the data type of a variable to avoid unexpected behavior in your code. This article will guide you through various methods to check data types in JavaScript with hands-on examples.

Using typeof Operator

The typeof operator is the most common way to check the data type of a variable.

let num = 42;
console.log(typeof num); // "number"

let str = "Hello, World!";
console.log(typeof str); // "string"

let bool = true;
console.log(typeof bool); // "boolean"

let undef;
console.log(typeof undef); // "undefined"

let func = function() {};
console.log(typeof func); // "function"

let obj = {};
console.log(typeof obj); // "object"

let nullVar = null;
console.log(typeof nullVar); // "object" (this is a known quirk in JavaScript)

Using instanceof Operator

The instanceof operator checks if an object is an instance of a specific class or constructor.

let arr = [1, 2, 3];
console.log(arr instanceof Array); // true

let date = new Date();
console.log(date instanceof Date); // true

class Person {}
let person = new Person();
console.log(person instanceof Person); // true

let regex = /abc/;
console.log(regex instanceof RegExp); // true

Using Array.isArray()

To specifically check if a variable is an array, you can use Array.isArray().

let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true

let num = 42;
console.log(Array.isArray(num)); // false

let obj = {0: 'a', 1: 'b', length: 2};
console.log(Array.isArray(obj)); // false

let arrLike = Array.from(obj);
console.log(Array.isArray(arrLike)); // true

Using Object.prototype.toString()

This method can be used to get a more precise type for objects.

function getDetailedType(obj) {
    return Object.prototype.toString.call(obj).slice(8, -1);
}

console.log(getDetailedType(42)); // "Number"
console.log(getDetailedType("hello")); // "String"
console.log(getDetailedType(true)); // "Boolean"
console.log(getDetailedType([])); // "Array"
console.log(getDetailedType({})); // "Object"
console.log(getDetailedType(null)); // "Null"
console.log(getDetailedType(undefined)); // "Undefined"
console.log(getDetailedType(new Date())); // "Date"

Using isNaN()

To check if a value is NaN (Not-a-Number), you can use the isNaN() function.

console.log(isNaN(NaN)); // true
console.log(isNaN(42)); // false
console.log(isNaN("42")); // false (can be converted to a number)
console.log(isNaN("Hello")); // true (cannot be converted to a number)
console.log(isNaN(true)); // false (converts to 1)
console.log(isNaN(undefined)); // true

Hands-On Example

Try checking the data type of different variables below:

Best Practices

  • Use typeof for primitive types (number, string, boolean, undefined).
  • Use instanceof for custom objects and built-in objects like Date, RegExp, etc.
  • Use Array.isArray() specifically for arrays.
  • Use Object.prototype.toString.call() for more precise type checking, especially for null and built-in objects.
  • Be aware of the quirks, like typeof null returning "object".
  • When working with numbers, use Number.isNaN() instead of the global isNaN() for more accurate results.

Conclusion

Understanding and correctly checking data types in JavaScript is crucial for writing robust and error-free code. While typeof is the most commonly used operator, it's important to be aware of its limitations and know when to use other methods like instanceof, Array.isArray(), or Object.prototype.toString.call(). By applying these techniques and following best practices, you can ensure your code handles different data types correctly and avoids unexpected behavior.

Comments & Discussion

Facing issues? Have questions? Post them here! We're happy to help!