Jshint: 启用 case 语句失败

创建于 2011-02-18  ·  10评论  ·  资料来源: jshint/jshint

我一直无法说服克罗克福德的一件事是允许案例陈述失败。

目前,这是可以的:

开关(富){
情况1:
案例2:
做一点事();
}

但这不是:

开关(富){
情况1:
先做某事();
案例2:
做一点事();
}

在我之前破解的 JSLint 版本中,我检查了评论 /_falls through_/ 以表明您打算失败:

开关(富){
情况1:
先做某事();
/_跌倒_/
案例2:
做一点事();
}

我真的很想看到它包含在 JSHint 中,因为很长一段时间以来,JSLint 一直让我感到痛苦。

最有用的评论

对于那些寻找.jshintrc对象键的人:

"-W086": true, //allow fall-through

所有10条评论

此外,从#11 - JSHint 可能应该有一个选项,允许一直到default

由于案例失败通常是无意的,因此我没有添加单独的选项来忽略该消息。 相反,我用一个明确的评论重新使用了你的方法,说失败是故意的。

开关(富){
情况1:
 剂量();
 /* 掉线 */
案例2:
 剂量();
 }

相关提交:4a72da1。

太好了,谢谢!

IIRC,克罗克福德在他的书中特别提到了为什么他不喜欢案例失败。 这个故事既有趣又有些自嘲。

很抱歉对此发表评论,但仍然会为case触发警告,并在块的末尾抛出一个 throw。 您可以使用/* falls through */注释禁用警告,但注释会被前一种情况、注释和下一种情况之间的空白以外的任何东西“干扰”(从某种意义上说,警告毕竟会被触发)案例所以我什至无法评论为什么评论在那里。

/* falls through */注释而不是break;是一个未记录的功能。 请将其添加到文档中。

可以/* falls through */之前的一行中添加其他注释。

借调。 请在文档中添加/*falls through*/

另外,请添加支持:

case 'none':
default:

虽然从技术上讲'none'大小写是不必要的,但它确实增加了代码的可读性。

+1 用于向文档添加有关此的信息。

作为一个兴趣点,我最近发现了一种“失败”案例的情况。 我用它来执行从 localStorage 读取的版本化数据的迁移。 前任:

function migrate( version, data ) {
    switch( version ) {
        case 1 :
            data.new1 = data.old;  // convert data from version 1 to version 2
            delete data.old;
        case 2 :
            data.new2 = data.new1;  // convert data from version 2 to version 3
            delete data.new1;
    }
    return data;  // return data in version 3 format
}

随着数据格式的发展,可以通过添加迁移旧版本的案例来维护代码,并应用所有将特定版本升级到最新版本的迁移。

对于那些寻找.jshintrc对象键的人:

"-W086": true, //allow fall-through
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

derekdata picture derekdata  ·  11评论

stefanuddenberg picture stefanuddenberg  ·  7评论

mcandre picture mcandre  ·  3评论

Sriram-Ramaswami picture Sriram-Ramaswami  ·  5评论

fbarda picture fbarda  ·  5评论