Javascript jshint抛出了一个“;预期为';中断';在'之前的声明;案例'&引用;
嗨,当我的框架使用jshint验证我的Javascript jshint抛出了一个“;预期为';中断';在'之前的声明;案例'&引用;,javascript,jshint,Javascript,Jshint,嗨,当我的框架使用jshint验证我的javascript代码时,我遇到了一个问题。我故意使用了switch case而没有break语句,但是当jshint检查时,这部分代码被捕获为错误。我的代码如下所示 switch (<no>){ case 1: // does something case 2: //does something more default: // does something ev
javascript
代码时,我遇到了一个问题。我故意使用了switch case而没有break语句,但是当jshint
检查时,这部分代码被捕获为错误。我的代码如下所示
switch (<no>){
case 1:
// does something
case 2:
//does something more
default:
// does something even more
}
开关(){
案例1:
//做点什么
案例2:
//做更多的事
违约:
//做了更多的事情
}
来自“jshint”的错误类似于第203行字符41:在“case”之前应该有一个“break”语句。
有没有想过如何避免它?或者在这种情况下使用切换案例是一种糟糕的做法吗?复制和粘贴:
开关语句
默认情况下,当您在switch语句中省略break或return语句时,JSHint会发出警告:
[……]
如果你真的知道你在做什么,你可以告诉JSHint你
通过添加/*falls-through*/
注释,使案例块失效
因此,在你的情况下:
switch (<no>) {
case 1:
// does something
/* falls through */
case 2:
//does something more
/* falls through */
default:
// does something even more
}
开关(){
案例1:
//做点什么
/*失败*/
案例2:
//做更多的事
/*失败*/
违约:
//做了更多的事情
}
确切地说,break
s可能是完全多余的,如本例所示
function mapX(x){
switch (x){
case 1:
return A;
case 2:
return B;
default:
return C;
}
}
在这种情况下,如果在返回之后发生中断
,则会抛出一个警告,即无法访问的代码
试图调和jshint和JS标准是很棘手的,但正如前面所说的,解决方案是
function mapX(x){
switch (x){
case 1:
return A;
/* falls through */
case 2:
return B;
/* falls through */
default:
return C;
}
}
现实世界的情况是什么?为什么不需要break
?当案例2出现时,我需要案例2&下面的所有内容都应该执行。所有情况都是如此。诸如此类的东西。我的逻辑工作正常,但验证失败。我经常有一些开关,在任何情况下我都不需要break
,这并不少见。如果只是做一个fall-through,可能会重复,这应该没问题,但也许有更好的选择,发布真正的代码会有所帮助。查字典是一种常见的选择。谢谢你给了他答案,而没有反复问他为什么要这样做:)+1。根据设计,switch语句支持中断或不支持中断,具体取决于您需要的行为。否则,为什么语言会要求您添加“中断”