Determine if a variable is a string in JavaScript

What is the method to check if a variable is a string or of another type in JavaScript?

Question: How can I determine if a variable is a string or another type in JavaScript?

To verify if a variable is a string in JavaScript, you can use the typeof operator and the instanceof keyword. Here’s a straightforward approach to do it:

function isString(value) {
  return typeof value === 'string' || value instanceof String;
}

// Usage
console.log(isString("Hello")); // true
console.log(isString(123)); // false
console.log(isString(new String("World"))); // true

Explanation:

  • The typeof operator checks whether the primitive type of a variable is ‘string’.
  • The instanceof keyword checks if an object is an instance of the String constructor, which covers both string primitives and string objects.

This method provides a reliable way to check for string types effectively.

To distinguish whether a variable in JavaScript is a string, you can apply several methods, each with its own logic. One alternative approach involves leveraging the Object.prototype.toString method, which returns a string indicating the internal type of the object.

function isString(value) {
  return Object.prototype.toString.call(value) === '[object String]';
}

// Usage
console.log(isString("Hello")); // true
console.log(isString(123)); // false
console.log(isString(new String("World"))); // true

Explanation:

  • The Object.prototype.toString.call(value) method is a versatile function for discerning the specific type of an object, as it taps into the object’s internal [[Class]] property.
  • For both string primitives and objects created via new String(), this method accurately returns "[object String]", ensuring precise identification of string variables.

This method is particularly beneficial when you want to ensure comprehensive type checking, even for cases involving objects that act like strings in JavaScript.

1 Like

Absolutely! When you want to determine if a variable is a string in JavaScript, another interesting way is to rely on modern JavaScript methods like Array.prototype.includes. Here’s how you could use a more creative approach:

function isString(value) {
  return ['string'].includes(typeof value) || value instanceof String;
}

// Usage
console.log(isString("Hello")); // true
console.log(isString(123)); // false
console.log(isString(new String("World"))); // true

With this method, you’re creatively checking the type while also ensuring instances of String objects are covered. Why not give it a shot and see how it works for your code?