我对在JavaScript中格式化switch
/case
语句从来都不是很满意。
switch (myVariable) {
case ('a'):
console.log('apple');
break;
case ('b'):
console.log('banana');
break;
case ('c'):
console.log('cherry');
break;
default:
console.log('pineapple);
}
我觉得case
声明之后的行应该缩进。
但是如果被缩进,那么在最后一个case的最后一行和switch
块的右花括号之间将会有一个奇怪的两列间隙。
我刚刚想到,我可以把每个case
的代码都用它们自己的花括号括起来。
我怀疑这可能是无效但是我的浏览器很满意,Prettier也很满意,令人惊讶的是,甚至JSHint也满足于这种格式。
下面是我所描述的一个例子:
switch (myVariable) {
case ('a'): {
console.log('apple');
break;
}
case ('b'): {
console.log('banana');
break;
}
case ('c'): {
console.log('cherry');
break;
}
default: {
console.log('pineapple);
}
}
这种格式允许代码缩进,而不会引入两列间距。
但肯定这不是有效的ECMAScript语法,是吗?
在语法中,单个"case"称为case子句。casec子句由以下部分组成:
case Expression: StatementList
一个StatementList是由一个StatementListItem组成的。
statementlisttitem可以是语句,也可以是声明。
语句可以是BlockStatement。
一个块语句是一个纯块——它是一个包含StatementList的块:
{ StatementList }
是的,这是有效的语法