Estoy tratando de crear una función simplista que use una declaración de cambio para devolver un número ponderado. Para mi caso de uso, la solución es la más adecuada, sin embargo, el resultado es "indefinido" sin razones obvias. Si alguien pudiera señalar el error, lo estoy cometiendo.
function randomCase() { let n = Math.floor(Math.random() * 100); switch (n) { case n < 70: return 1; case n < 80: return 2; case n < 90: return 3; case n < 100: return 4; } } temp = randomCase(); console.log(temp);
Traté de depurar con la herramienta de desarrollo de Chrome y descubrí qué podría estar causando esto, pero fue en vano. Parece que hay algo obvio que me estoy perdiendo. (Todavía aprendiendo JS)
Como VLAZ mencionó en los comentarios, una declaración de cambio verifica la igualdad.
Querrás usar una declaración if en su lugar:
function randomCase() { let n = Math.floor(Math.random() * 100); if (n < 70) { return 1; } else if (n < 80) { return 2; } else if (n < 90) { return 3; } else if (n < 100) { return 4; } } temp = randomCase(); console.log(temp);