JSLint在下划线前缀变量名称中报告“意外悬挂”字符


73

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

我在自己建立的网站上使用Google Analytics(分析)。我参考了GA的变量,例如“ _gaq”。

我正在尝试使我的JS代码成为100%JSLint干净的(我对自己的编码风格不虔诚,所以会与克罗克福德先生的律师一起使用)。就是说,我对Google的变量名无能为力……所以,我想我不可能100%做到“干净”。

如果我误解了消息,可以在此发布,并且可以做一些符合JSLint惯例的事情。


2
我不明白为什么下划线应该不好。
奥利弗·沃特金斯

Answers:


72

嗯,我已经解决了这个问题...我用JSLint命令包装了使用带下划线前缀的变量的语句,以禁用它,然后重新启用此类错误:

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

12
-1。要禁用此警告,您需要先将nomen:设置为true,然后再设置为false。在jslint网站上:“如果不应该检查名称的下划线或下划线,则为true。”
伊戈尔·泽瓦卡

3
这不符合JSLint惯例;它禁用检查该警告。
WhyNotHugo 2012年

3
如果您使用的是像underscore.js这样的库,它将变得凌乱。使用jslint --nomen <filename>代替。
pseudosudo 2014年

51

解决此问题的最佳方法就是启用“标识符中的悬挂悬挂_”(命名)选项。有关详细信息,请参见http://www.jslint.com/lint.html


7
这是所提问题的最佳答案。我希望jslint能够接受下划线
js,

1
您能提供一个工作链接吗?我有点困惑如何找到合适的资源。
OddDev

答案和评论中的链接已断开。最好在这里包含答案而不是链接到它
蒂姆·帕特里奇

15

JSLint只是一个代码质量工具。没有完全通过其测试并不意味着您的代码是错误的。这仅表示您不遵循其创建者制定的所有约定。尽管JSLint提出了很好的建议,但并非总是可以全部实现,特别是当使用未经测试的其他人的库时。不要在源代码中添加无意义的元注释,而应在代码中禁用“不允许在标识符中悬挂_”,因为使用特定代码似乎没有意义。


1
我很欣赏您的观点,尽管JSLint是一个人的愿景,但我的代码库100%干净对我来说非常有效-当我遇到错误时,它们始终处于逻辑状态。
Zhami 2011年

1
我的主要观点是,JSLint元注释往往会降低可读性,并且可能会使另一个读者““?”,因此,最好忽略或禁用该特定检查,而不是将其保留在您的源中。

2
还有其他不依赖于有问题的外部库的代码呢?这就是/ * jslint指令的作用。这不是您必须在全球范围内做出的决定。
1983

8

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

jslint --nomen myfile.js 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.