Nunca me siento del todo cómodo con el formato de declaraciones de switch / case en JavaScript. Dado lo siguiente:
switch (myVariable) { case ('a'): console.log('apple'); break; case ('b'): console.log('banana'); break; case ('c'): console.log('cherry'); break; default: console.log('pineapple); } Siento que las líneas después de la declaración del case deberían estar sangradas.
Pero si tuvieran sangría, entonces habría un espacio de dos columnas de aspecto peculiar entre la última línea del último caso y la llave de cierre del bloque del switch .
Se me acaba de ocurrir que podría encerrar el código de cada case dentro de sus propias llaves.
Sospeché que esto podría no ser válido , pero mi navegador está contento con él, Prettier está contento con él y, sorprendentemente, incluso JSHint está contento con este formato.
Aquí hay un ejemplo de lo que estoy describiendo:
switch (myVariable) { case ('a'): { console.log('apple'); break; } case ('b'): { console.log('banana'); break; } case ('c'): { console.log('cherry'); break; } default: { console.log('pineapple); } }Este formato permite la sangría del código sin introducir el espacio de dos columnas.
Pero seguramente esta no es una sintaxis ECMAScript válida, ¿verdad?
En la sintaxis, un solo "caso" se llama CaseClause . Una CaseClause se compone de:
case Expression: StatementList
Una StatementList se compone de un StatementListItem.
Un StatementListItem es una sentencia o una declaración.
Una declaración puede ser un BlockStatement.
Una declaración de bloque es un bloque simple , que es un bloque que contiene una lista de declaraciones:
{ StatementList }
Entonces sí, es una sintaxis válida.