在ECMAScript中使用花括号将每个case包围在switch / case语句中是否有效? &g



我对在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 }

是的,这是有效的语法

最新更新