【问题标题】:JSLint reports "Unexpected dangling" character in an underscore prefixed variable nameJSLint 在下划线前缀的变量名中报告“意外悬空”字符
【发布时间】:2011-03-03 15:31:42
【问题描述】:

我知道有些人认为前导下划线的存在暗示变量是“私有的”,这种隐私是虚构的,并假设这就是 JSLint 报告此类名称并带有错误消息的原因。

我在我正在构建的网站上使用 Google Analytics。我引用了 GA 的变量,例如“_gaq”。

我正在努力让我的 JS 代码 100% JSLint 干净(我对自己的编码风格并不执着,因此会同意 Crockford 先生的建议)。也就是说,我无法对 Google 的变量名称做任何事情……所以,我想我无法做到 100%“干净”。

我在这里发帖以防我误解了该消息,并且可以做一些事情来遵守 JSLint 实践。

【问题讨论】:

  • 我不明白为什么下划线应该不好。

标签: javascript jslint


【解决方案1】:

啊,我已经处理好了...我将使用下划线前缀变量的语句与 JSLint 命令包装在一起以禁用,然后重新启用此类错误:

/*jslint nomen: true*/
... statement(s) with _var ...
/*jslint nomen: false*/

【讨论】:

  • -1。要禁用此警告,您需要先将 nomen: 设置为 true,然后再设置为 false。来自 jslint 网站:“如果不应检查名称的首字母或尾随下划线,则为 true。”
  • 这不符合 JSLint 的做法;它会禁用对该警告的检查。
  • 如果你使用像 underscore.js 这样的库,这会变得很乱。请改用jslint --nomen <filename>
【解决方案2】:

处理此问题的最佳方法是启用“允许在标识符中悬挂 _”(nomen) 选项。详情见http://www.jslint.com/lint.html...

【讨论】:

  • 这是所提问题的最佳答案。我希望 jslint 能容忍 underscorejs 但不能容忍 _ 标识符...
  • 您能提供一个有效的链接吗?我不知如何找到合适的资源。
  • 答案和 cmets 中的链接已损坏。最好在此处包含答案而不是链接到它
【解决方案3】:

JSLint 只是一个代码质量工具。没有完全通过测试并不意味着你的代码不好;它只是意味着您不遵循其创建者制定的所有约定。尽管 JSLint 提出了非常好的建议,但并不总是能够满足所有这些建议,尤其是在使用未经测试的其他人的库时。与其在源代码中乱扔无意义的元数据集,不如在禁用“禁止在标识符中悬挂 _”选项的情况下检查代码,因为与您的特定代码一起使用似乎没有意义。

【讨论】:

  • 我很欣赏您的观点,虽然 JSLint 是一个人的愿景,但让我的代码库 100% 干净对我来说效果很好——当我有错误时,它们总是在逻辑上。
  • 我的主要观点是 JSLint meta-cmets 往往会降低可读性,并且可能会让另一个读者“嗯?”,所以最好忽略或禁用该特定检查而不是将它们保存在您的源中。
  • 那么其他不依赖于有问题的外部库的代码呢?这就是 /*jslint 指令的用途。这不是您必须在全球范围内做出的决定。
【解决方案4】:

我将 JSLInt 与 node.js 一起使用。您可以传递 --nomen 标志来绕过此功能

jslint --nomen myfile.js 

【讨论】:

    猜你喜欢
    • 2017-10-22
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多