si hay una declaración de cambio que tiene un default , ¿se lograría lo mismo simplemente poniendo lo que sea que esté en el default debajo de la declaración de cambio?
1)
function test(foo) { switch(foo.num) { case "1": return "hello" case "2": return "bye" default: return "neither" } } function test(foo) { switch(foo.num) { case "1": return "hello" case "2": return "bye" } return "neither" }¿Estos dos siempre funcionan de la misma manera o hay algo que estoy pasando por alto?
Por lo que estás haciendo, son lo mismo, pero solo porque estás regresando. Sin embargo, Switch se usa a menudo para otras declaraciones que no sean return , por ejemplo:
function test(foo) { switch(foo.num) { case "1": console.log('1'); break; case "2": console.log('2'); break; default: console.log('nope'); } }Arriba, registrará exactamente un valor cuando se llame a la función. pero si lo haces
function test(foo) { switch(foo.num) { case "1": console.log('1'); break; case "2": console.log('2'); break; } console.log('nope'); } puede registrar 1 o 2, pero luego también registrará nope independientemente, porque no está regresando dentro del interruptor .
En el caso de que solo desee devolver un valor que depende de otro valor, considere usar un objeto en su lugar: es mucho más conciso (y más fácil de entender).
const returnValues = { 1: 'hello', 2: 'bye', }; const test = foo => returnValues[foo] ?? 'neither';