在 switch / case 语句中用大括号括起每个 case 是否是 ECMAScript 中的有效语法?
Is it valid syntax in ECMAScript to surround each case in a switch / case statement with curly braces?
我对 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 的最后一行和 [= 的结束花括号之间会有一个看起来很奇怪的两列间隙12=]块。
我刚刚想到我可以将每个 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”称为 CaseClause。 CaseClause 由以下部分组成:
case Expression: StatementList
一个语句列表is composed of一个语句列表项。
一个 StatementListItem is either 一个语句或声明。
一个语句may be一个块语句。
块语句是 a plain block - 这是一个包含语句列表的块:
{ StatementList }
是的,这是有效的语法。
我对 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 的最后一行和 [= 的结束花括号之间会有一个看起来很奇怪的两列间隙12=]块。
我刚刚想到我可以将每个 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”称为 CaseClause。 CaseClause 由以下部分组成:
case Expression: StatementList
一个语句列表is composed of一个语句列表项。
一个 StatementListItem is either 一个语句或声明。
一个语句may be一个块语句。
块语句是 a plain block - 这是一个包含语句列表的块:
{ StatementList }
是的,这是有效的语法。