Soy nuevo en JavaScript y estoy siguiendo un curso, intenté buscar respuestas en otras publicaciones pero no pude encontrar nada similar, con suerte, no me perdí ninguna.
tengo este codigo:
const calculateWeight = (earthWeight, planet) => { if (typeof earthWeight !== "number") { return "The earth weight must be a number!!"; } if (typeof planet !== "string") { return "The planet will accept only letters!!"; } planet = planet.charAt(0).toUpperCase() + planet.slice(1).toLowerCase(); if (planet === "Mercury") { return earthWeight * 0.378; } else if (planet === "Venus") { return earthWeight * 0.907; } else if (planet === "Mars") { return earthWeight * 0.377; } else if (planet === "Jupiter") { return earthWeight * 2.36; } else if (planet === "Saturn") { return earthWeight * 0.916; } else { return "Invalid Planet Entry. Try: Mercury, Venus, Mars, Jupiter, or Saturn." } } console.log(calculateWeight(100, "Jupiter"));En la primera y segunda declaración if, he usado typeof para devolver un mensaje en caso de que el argumento de EarthWeight no sea un número y el argumento de planet no sea una cadena en la última línea del código donde ejecuto la función. .
Funciona si pongo una cadena en lugar de un número y viceversa, pero si pongo una palabra sin comillas, simulando un error, simplemente obtengo un error, ¿hay alguna forma de devolver un mensaje?
Mirando la documentación de MDN, parece que una palabra sin comillas debería ser del tipo "indefinido", así que pensé que cambiar ese código de esta manera ayudaría:
if (typeof earthWeight !== "number" || typeof earthWeight === "undefined") { return "The earth weight must be a number!!"; } if (typeof planet !== "string" || typeof planet === "undefined") { return "The planet will accept only letters!!"; }¿Es eso algo posible?
Atentamente.