¿Cómo verifico una cadena vacía/indefinida/nula en JavaScript?
¿Existe un string.Empty
en JavaScript o es solo un caso de verificarlo ""
?
Cadena vacía, indefinida, nula, ...
Para comprobar un valor veraz :
if (strValue) {
// strValue was non-empty string, true, 42, Infinity, [], ...
}
Para comprobar si hay un valor falso :
if (!strValue) {
// strValue was empty string, false, 0, null, undefined, ...
}
Cadena vacía (¡solo!)
Para verificar exactamente una cadena vacía, compare la igualdad estricta con ""
el uso del ===
operador :
if (strValue === "") {
// strValue was empty string
}
Para verificar estrictamente si no hay una cadena vacía, use el !==
operador :
if (strValue !== "") {
// strValue was not an empty string
}
Para verificar si una variable es falsa o si tiene un atributo de longitud igual a cero (lo que para una cadena significa que está vacía), uso:
function isEmpty(str) {
return (!str || str.length === 0 );
}
(Tenga en cuenta que las cadenas no son las únicas variables con un length
atributo; las matrices también lo tienen, por ejemplo).
Como alternativa, puede utilizar las (no tan) nuevas funciones opcionales de encadenamiento y flecha para simplificar:
const isEmpty = (str) => (!str?.length);
Verificará la longitud y regresará undefined
en caso de un valor nulo, sin arrojar un error. En el caso de un valor vacío, cero es falso y el resultado sigue siendo válido.
Para verificar si una variable es falsa o si la cadena solo contiene espacios en blanco o está vacía, uso:
function isBlank(str) {
return (!str || /^\s*$/.test(str));
}
Si lo deseas, puedes parchear el String
prototipo de esta manera:
String.prototype.isEmpty = function() {
// This doesn't work the same way as the isEmpty function used
// in the first example, it will return true for strings containing only whitespace
return (this.length === 0 || !this.trim());
};
console.log("example".isEmpty());
Tenga en cuenta que los tipos integrados de parches de mono son controvertidos, ya que pueden romper el código que depende de la estructura existente de los tipos integrados, por cualquier motivo.
Todas las respuestas anteriores son buenas, pero esta será aún mejor. Utilice operadores NOT duales ( !!
):
if (!!str) {
// Some code here
}
O utilice la conversión de tipos:
if (Boolean(str)) {
// Code here
}
Ambos hacen la misma función. Encasille la variable a booleana, donde str
es una variable.
Regresa
false
pornull
,undefined
,0
,000
,""
,false
.Devuelve
true
todos los valores de cadena distintos de la cadena vacía (incluidas cadenas como"0"
y" "
)