la parte 'predeterminada' de mi declaración de cambio en JavaScript no está iniciando sesión en mi código. Obtengo un 'indefinido' si escribo cualquier otra cosa que no sea un día de la semana. Soy nuevo en JavaScript y no estoy seguro de lo que está pasando.
He tratado de impulsar mi conocimiento de las declaraciones de cambio al incluir otras entradas alternativas para 'día'. Todo funcionó bien hasta que agregué estos extras y el valor predeterminado.
function getSleepHours(day) { switch (day) { case "monday": case "Monday": case "mon": case "Mon": return 8; break; case "tuesday": case "Tuesday": case "tue": case "Tue": return 7.5; break; case "wednesday": case "Wednesday": case "wed": case "Wed": return 6.75; break; case "thursday": case "Thursday": case "thu": case "Thu": return 6; break; case "friday": case "Friday": case "fri": case "Fri": return 8.25; break; case "saturday": case "Saturday": case "sat": case "Sat": return 10; break; case "sunday": case "Sunday": case "sun": case "Sun": return 9; break; default: "Re-enter a day of the week only. The following entries are valid: monday, Monday, mon or Mon etc." } }; console.log(getSleepHours("Monday")); //result should = 8 console.log(getSleepHours("td")); //*result should = default message, but logs 'undefined'.* console.log(getSleepHours("Wednesday")); //result should = 6.75 console.log(getSleepHours("thursday")); //result should = 6 console.log(getSleepHours("fri")); //result should = 8.25 console.log(getSleepHours("saturday")); //result should = 10 console.log(getSleepHours("Sun")); //result should = 9Te faltaba la devolución en el default
Todo ese código podría escribirse así
const vals = { "sun": 9, "mon": 8, "tue": 7.5, "wed": 6.75, "thu": 6, "fri": 8.25, "sat": 10 }; const getSleepHours = day => { day = day.toLowerCase().slice(0, 3); const sleep = vals[day]; // if found return sleep || "Re-enter a day of the week only. The following entries are valid: monday, Monday, mon or Mon etc."; }; console.log(getSleepHours("Monday")); //result should = 8 console.log(getSleepHours("td")); //*result should = default message, but logs 'undefined'.* console.log(getSleepHours("Wednesday")); //result should = 6.75 console.log(getSleepHours("thursday")); //result should = 6 console.log(getSleepHours("fri")); //result should = 8.25 console.log(getSleepHours("saturday")); //result should = 10 console.log(getSleepHours("Sun")); //result should = 9