我可以把这个评论放在哪里? JSLint 抱怨展示位置

Posted

技术标签:

【中文标题】我可以把这个评论放在哪里? JSLint 抱怨展示位置【英文标题】:Where can I put this comment? JSLint complains about the placement 【发布时间】:2013-10-01 12:51:11 【问题描述】:

我在一个项目上运行JSLint,我遇到了这个错误:

预计 else 之间正好有一个空格

在这个代码块上:

// Check for the existance of the file created by firstrun.js
if (runOnce.exists) 
    window.location = 'app:/core/firstrun.html';


// Check for version info
else if (!versionInfo.exists) 
    window.location = 'app:/core/createVersion.html';

// Check for version info 行显然是导致问题的原因;但是克罗克福德会让我把这条评论放在哪里?

我显然可以将else if 更改为if,因为第一个if 包含重定向;但我有其他评论 if/else if/elsenot 包含重定向。

【问题讨论】:

JSLint, else and Expected exactly one space between '' and 'else' error的可能重复 老实说,您在该示例中提供的 cmets 甚至没有比代码已经说明的更多内容,那么为什么还要麻烦呢?他们甚至可能在这些条件下。 @guessimtoolate 为了简洁起见,我编辑了代码。实际的代码块更复杂。 @EugeneEvdokimov 这不是重复的。我知道为什么会显示错误。我想知道的是 where 放置评论。这个问题的答案只是证实了我已经知道的。 我想 Crockford 会让您将两个 cmets 都放在顶部:“如果发生这种情况,我们会这样做,否则我们也会这样做”。这允许稍后浏览的读者无需滚动即可获得整个控制块的要点。 “段落”没有被拆分。 【参考方案1】:

设置 JSLint 选项以允许混乱的空白,否则它会尝试强制执行自己的空白样式规则,这很愚蠢(IMO):

/*jslint white: true */

【讨论】:

使用 Lint 的想法是强制执行严格的编码风格,这就是我/我们正在使用它的原因。这不符合重点。 大声笑。然后你必须使用@Joe 的风格。也就是说,我认为你已经回答了你自己的问题——如果你想要 Crockford 的空白样式(JSLint imo 中最没用的部分之一),你必须改变你的。如果你想要你的,你设置white:true。 Crockford 确实为您提供这些设置是有原因的。乔或科林都有“正确”的答案。【参考方案2】:

看起来有点怪,不过我用的是这种风格。

if (runOnce.exists) 
    // Check for the existance of the file created by firstrun.js
    window.location = 'app:/core/firstrun.html';
 else if (!versionInfo.exists) 
    // Check for version info
    window.location = 'app:/core/createVersion.html';


老实说,在这种情况下,请忘记 JSLint。 这些只是建议,而不是规则。我认为可读性在这里更重要。

【讨论】:

【参考方案3】:

我知道这听起来很奇怪,但您可以尝试将其与 else 内联 像这样:

else if (!versionInfo.exists)  // Check for version info    
        window.location = 'app:/core/createVersion.html';    

来自 JsFiddle 的 JSHint 说这段 js 在语法上是有效的:/

【讨论】:

必须是 else if (!versionInfo.exists) // Check for version info,前面是。不是一个可怕的想法,但它看起来并不好。不过我给你投了赞成票!另外, JSHint !== JSLint; Hint 是一个社区分支,适合不喜欢 Lint 严格性的人。 不,不是, 在上面的单独一行中。 @CollinGrady 这在 JSLint 中无效。它会产生完全相同的错误(预计在 else 之间正好有一个空格)

以上是关于我可以把这个评论放在哪里? JSLint 抱怨展示位置的主要内容,如果未能解决你的问题,请参考以下文章

为啥 jslint 在模板字符串上抱怨 Unexpected '`'

我在哪里可以找到 Aptana Studio 中的 jslint 配置文件

是否可以设置 Eclipse Javascript 格式化程序以符合 JSLint?

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

WebStorm 2016自动格式代码基于自定义要求

我应该把我的着色器代码放在哪里?