【问题标题】:switch fall through being ignored by JSHint开关被 JSHint 忽略
【发布时间】:2023-08-15 11:19:01
【问题描述】:

我正在通过JSHint 运行我的代码,我遇到了这个错误:

case 之前需要一个break 语句

在这个代码块上:

switch(true)
{
    // Renames skill1=abc to section_8_1_body=abc
    case Major === 0 && Minor === 0 && Patch < 433:
        upgraded = upgraded.replace(/(\s+)skill(\d)=/gm, '$1section_8_$2_body=');
    /*falls through*/

    // Example
    case Major === 0 && Minor === 0 && Patch < 442:
        console.log('test');
    /*falls through*/
}

代码检查文件的版本信息,并将其升级为与最新版本的软件兼容。因此有意让cases 失效,以便一个文件可以通过多个版本进行升级。

但是,我仍然收到错误消息, 添加了/*falls through*,尽管it is supposedly valid

如何让我的cases 在 JSHint 中成功通过?

【问题讨论】:

    标签: javascript jshint


    【解决方案1】:

    JSHint 似乎希望评论出现在 case 之前的那一行。

    // Example
    /* falls through */
    case Major === 0 && Minor === 0 && Patch < 442:
        console.log('test');
    

    根据in the source code的描述,否则不承认评论:

    // You can tell JSHint that you don't use break intentionally by
    // adding a comment /* falls through */ on a line just before
    // the next `case`.
    

    【讨论】:

    • 啊,谢谢乔纳森!我尝试删除 // Example 行,但仍然遇到同样的错误。问题是/*falls through*/case 之间的空白行。