Estoy estudiando javascript y aquí está mi problema.
Me dieron la variable llamada "couldBeAnything" que puede ser cualquier tipo de datos. Y otra variable que nombró resultado, también. Debo verificar si la variable dada es una matriz y luego asignar verdadero al resultado. Otros casos entonces falso para dar como resultado. Aquí está el código.
function checkIsArray(couldBeAnything) { var result = true ? Array.isArray(couldBeAnything) == true : false return result; }
Perdón por mi sorpresa, porque este código es de mi superior, por lo que no puedo entenderlo claramente, solo entiendo si es así, ¿podría explicarme este código? ¿Cómo funciona la dosis? Muchísimas gracias.
Esto funciona porque está realizando varias operaciones sin sentido que complican su lectura, pero en realidad solo usa Array.isArray
.
Array.isArray(couldBeAnything) == true
Si se pasa una matriz, Array.isArray es verdadero, verdadero == verdadero es verdadero.
Entonces, lo que obtienes es, si se pasa una matriz:
var result = true ? true : false;
Cual es verdad.
Y para una no matriz:
var result = true ? false : false;
Lo cual es falso.
Con suerte, esto es el resultado de varias refactorizaciones o fusiones perezosas, porque escribir esto a propósito es bastante tonto, como han dicho otros.
Creo que no has estado expuesto a operadores ternarios.
let x=true let result if(x){ result="Thats true" } else{ result="No thats false" } console.log(result)
Lo anterior se puede escribir como
let x=true let result=x?"That's true":"No that's false" console.log(result)
La lógica es que si la expresión anterior a ?
es cierto entonces el código después de ?
se ejecutará y, si es falso, se ejecutará el código después de :
.
Eso es simple, ¿verdad?
En tu caso el código está mal. Debería ser así:
function checkIsArray(couldBeAnything) { var result = Array.isArray(couldBeAnything) ? true : false return result; }
Pero no hay necesidad de condiciones ternarias aquí. Puedes usar esto directamente
function checkIsArray(couldBeAnything) { return Array.isArray(couldBeAnything) }