¿Puede alguien explicarme por qué esto devuelve una cadena vacía ("") en lugar de una booleana (falsa)?Javascript devolviendo la cadena en lo que debería ser una prueba booleana taquillera
var x = "";
alert(x && x.length > 0);
... Aunque esto funciona como se espera, volviendo cierto:
var y = "abc";
alert(y && y.length > 0);
Básicamente, estoy tratando de hacer una simple comprobación abreviada para ver si existe un valor en una variable (asegurando que no es cadena indefinida, nula o vacía).
Sé que puedo hacer cada prueba individualmente (x == nulo, typeof x == 'undefined', x == '') - Solo trato de entender por qué Javascript devuelve una cadena en lo que parece ser una prueba booleana.
nota que se puede forzar el retorno de una '' boolean' utilizando !! (x) ' – ajax333221
deberías poder acortar con algo más parecido a' alert (typeof x! = Undefined && x.length> 0) 'porque esos dos devuelven bools, aunque, si alguna vez x no está definido, puede arrojar un error (muy probablemente) porque el 1er argumento podría ser un error, sería mejor dividirlos en mini func o en línea – SpYk3HH