如何告诉 JSLint 不要在单行 if 语句中要求

Posted

技术标签:

【中文标题】如何告诉 JSLint 不要在单行 if 语句中要求【英文标题】:How to tell JSLint not to ask for on single line if statements 【发布时间】:2013-01-06 14:36:06 【问题描述】:

现在我有以下代码:

if (c > last) break;

而 jslint 抱怨

jslint:crud.js:69:19:Expected '' and instead saw 'break'.

有几种方法可以克服它:

if (c > last)  break; 

if (c > last)  
  break; 

但我希望 jslint 在 if 语句在同一行时不要抱怨。

有什么方法可以配置吗?

顺便说一句:我正在使用 sublime text 和 sublime-jslint 插件,配置如下:


    // Path to the jslint jar.
    // Leave blank to use bundled jar.
    "jslint_jar": "",

    // Options pass to jslint.
    "jslint_options": "--indent 2 --white --maxerr 10000 --nomen --browser --plusplus --es5",

    // Ignore errors, regex.
    "ignore_errors":
    [
        "Combine this with the previous 'var' statement.",
        "It is not necessary to initialize"
    ],

    // run jslint on save.
    "run_on_save": false,

    // debug flag.
    "debug": false

知道如何配置它吗?

【问题讨论】:

【参考方案1】:

不幸的是,JSLint 没有提供一个配置选项来告诉它容忍这种情况。在 JSLint 看来,最好总是在条件或迭代语句后加上块语句,即使该块只包含一条语句。

如果您切换到更易于配置的JSHint,您可以使用curly 选项:

/*jshint curly: false */

这将 JSHint 配置为允许没有花括号的单个语句,无论它是否与前面的条件或迭代语句在同一行。

如果你的 Sublime 插件只支持 JSLint,我强烈推荐 SublimeLinter,这是我使用的。它同时支持 JSLint 和 JSHint。

【讨论】:

非常感谢,我会试一试...你知道它是否适用于 jslint4java 吗?上班不知道能不能装node @opensas - 恐怕它不会... jslint4java 只是 JSLint 的一个 Java 包装器。 JSHint 最初是 JSLint 的一个直接分支,但现在它们已经大不相同了,需要有人为它编写一个单独的 Java 包装器。 忽略单行 if 语句使用curly: false 它有效,但不幸的是也允许两行 if 不带花括号 由于将这个有争议的事实作为事实陈述而被否决:“良好的做法是始终遵循带有块语句的条件或迭代语句。”请用“一些程序员推荐...”来断言这些类型的语句

以上是关于如何告诉 JSLint 不要在单行 if 语句中要求的主要内容,如果未能解决你的问题,请参考以下文章

如何防止空行位于单行 if 语句之间?

如何告诉 JSLint / JSHint 已经定义了哪些全局变量

如何在 VBScript for Classic-ASP 中执行单行 If 语句?

如何在mysql触发器中声明If语句

if else语句如何做单行? [复制]

如何解决 JSLint 警告“不要使用 'new' 产生副作用”?