JavaScript: compruebe si la variable es una cadena

En este tutorial, aprenda a comprobar si una variable es una cadena o no en JavaScript, tanto para cadenas creadas de forma implícita como explícita, con o sin la nueva palabra clave, así como con Lodash.

Introducción

JavaScript admite una variedad de tipos de datos, como cadenas, números, flotantes, etc. Una cadena es una colección de caracteres como "John Doe". Por lo general, los crea encerrando los caracteres entre comillas simples o dobles. Alternativamente, puedes hacer una cadena usando el constructor new String():

1
2
let myString = 'John Doe';
let myString2 = new String("John Doe");

Al realizar operaciones específicas, es posible que se enfrente a una situación que le exija verificar que una variable específica es una cadena antes de procesarla, para que no se produzca un error. ¡Cubriremos esa situación en este artículo! Primero, veremos cómo verificar si una variable en particular es una cadena en JavaScript y luego le mostraremos un enfoque alternativo que usa la biblioteca Lodash.

Solución estándar: uso del operador tipode

En JavaScript, el operador typeof es el método más utilizado para verificar el tipo de cualquier variable. Alternativamente, puedes usar el método typeof():

1
2
3
4
let myString = 'John Doe';

typeof myString;  // string
typeof(myString); // string

Si se usa con una cadena, el operador typeof devuelve "cadena". Vamos a crear un ejemplo simple para confirmar esto:

1
2
3
4
5
6
7
let myString = "John Doe";

if (typeof myString === "string") {
    console.log("This variable is a string");
} else {
    console.log("This variable is not a string");
}

De hecho, myString es una cadena:

1
This variable is a string

{.icon aria-hidden=“true”}

Nota: Incluso si la variable contiene un número entre comillas simples o dobles, aún se consideraría una cadena.

Un problema interesante con el operador typeof es que no reconoce cadenas creadas usando el constructor new String(). La palabra clave nuevo crea un nuevo objeto de JavaScript que es la instancia del tipo String. Por lo tanto, el operador typeof no reconocerá correctamente las cadenas creadas con el constructor new String():

1
2
3
let myString = new String('John Doe');

console.log(typeof myString); // "object"

En este caso, en lugar del operador typeof, necesitamos usar el operador instanceof - puede detectar que el objeto creado con el constructor new String() es la instancia del tipo String:

1
2
3
4
5
6
7
let myString = new String("John Doe");

if (myString instanceof String) {
    console.log("This variable is a string");
} else {
    console.log("This variable is not a string");
}

Dado que myString es una cadena, este código producirá el siguiente resultado:

1
This variable is a string

Uso de la biblioteca Lodash

Si ya está usando la biblioteca Lodash en su proyecto, ¡no hay nada de malo en usarla para verificar si una variable es una cadena o no! No es absolutamente necesario tener una dependencia si no necesitamos Lodash para otra cosa, pero, si ya tenemos esa dependencia, podemos hacer uso de [_.isString()](https:/ /underscorejs.org/#isString), que devuelve true si el valor especificado es una cadena primitiva o un objeto String, lo que lo hace apto para cadenas creadas explícita e implícitamente:

1
2
3
4
5
6
7
let myString = new String("John Doe");

if (_.isString(myString)) {
    console.log("This variable is a string");
} else {
    console.log("This variable is not a string");
}

Producción:

1
This variable is a string

Conclusión

En este artículo, hemos aprendido cómo verificar si una variable es una cadena en JavaScript. Además, hemos aprendido cómo funciona esto con una biblioteca externa como Lodash.