我应该使用JSLint还是JSHint JavaScript验证?

我应该使用JSLint还是JSHint JavaScript验证?,javascript,jslint,jshint,Javascript,Jslint,Jshint,我目前正在根据JSLint验证我的JavaScript,并在这方面取得进展,它帮助我编写更好的JavaScript,特别是在使用Jquery库时 我现在遇到了JSHint,一种JSLint 因此,我想知道web应用程序是由JavaScript驱动的,哪种验证工具更好或最适用: JSLint还是JSHint 我想现在就决定一个验证机制,接下来,使用它进行客户端验证 jshint和jslint之间的区别是什么?请用一个javascript示例进行解释 链接: jshint- jslint- 我要

我目前正在根据JSLint验证我的JavaScript,并在这方面取得进展,它帮助我编写更好的JavaScript,特别是在使用Jquery库时

我现在遇到了JSHint,一种JSLint
因此,我想知道web应用程序是由JavaScript驱动的,哪种验证工具更好或最适用:

  • JSLint还是JSHint
我想现在就决定一个验证机制,接下来,使用它进行客户端验证

jshint和jslint之间的区别是什么?请用一个javascript示例进行解释

链接:

  • jshint-

  • jslint-


  • 我要提出第三个建议,也是第三个建议。你可以在网上试试

    闭包编译器是使JavaScript下载和运行更快的工具。它是一个真正的JavaScript编译器。它不是从源语言编译成机器代码,而是从JavaScript编译成更好的JavaScript。它解析JavaScript,分析它,删除死代码,重写并最小化剩下的代码。它还检查语法、变量引用和类型,并警告常见的JavaScript陷阱


    [编辑]
    此答案已编辑。我把下面的原始答案留给上下文(否则这些评论就没有意义了)

    最初提出这个问题时,JSLint是JavaScript的主要linting工具。JSHint是JSLint的一个新分支,但与最初的分支没有太大的区别

    从那时起,JSLint基本上保持了静态,而JSHint却发生了很大的变化——它抛弃了许多JSLint的更具对抗性的规则,添加了大量新规则,并且总体上变得更加灵活。此外,现在还提供了另一个工具ESLint,该工具更加灵活,具有更多的规则选项

    在我最初的回答中,我说你不应该强迫自己遵守JSLint的规则;只要您理解它抛出警告的原因,您就可以自己判断是否更改代码以解决警告

    对于2011年的JSLint的超严格规则集,这是一个合理的建议——我看到很少有JavaScript代码集能够通过JSLint测试。然而,由于现在的JSHint和ESLint工具中提供了更实用的规则,因此尝试让代码在零警告的情况下通过它们是更现实的建议

    偶尔也会有人抱怨你故意做的事情——例如,你知道你应该总是使用
    ==
    ,但这一次你有很好的理由使用
    =
    。但即使如此,使用ESLint,您也可以选择在所讨论的行周围指定
    ESLint disable
    ,这样您仍然可以在零警告的情况下通过lint测试,其余代码都遵守规则。(只是不要经常做那种事!)


    [原始答案如下]

    务必使用JSLint。但不要对结果和它警告的所有问题都挂断电话。它将帮助您改进代码,并帮助您发现潜在的bug,但并非JSLint抱怨的所有问题都是真正的问题,因此您不必在没有警告的情况下完成此过程

    几乎任何长度或复杂度很高的Javascript代码都会在JSLint中产生警告,不管它写得有多好。如果你不相信我的话,试着通过它运行一些流行的库,比如JQuery

    一些JSLint警告比其他警告更有价值:了解哪些警告需要注意,哪些警告不那么重要。每一个警告都应该被考虑,但不要觉得有义务修改代码来清除任何给定的警告;查看代码并确定您对其满意是完全可以的;有时候,JSlint不喜欢的事情实际上是正确的;外卖博士:

    如果您正在为自己或团队寻找一个非常高的标准,JSLint。但它不一定是标准,只是一个标准,其中一些标准是从一个名为Doug Crockford的javascript之神那里教条般地带给我们的。如果你想更灵活一些,或者你的团队中有一些不相信JSLint观点的老专家,或者经常在JS和其他C族语言之间来回走动,那么试试JSHint

    长版本:

    fork背后的推理很好地解释了JSHint存在的原因:

    所以我想这是“社区驱动”而不是Crockford驱动。在实践中,JSHint对于JSLint所坚持的一些风格和次要句法“观点”通常更为宽容(或者至少是可配置的或不可知的)

    例如,如果您认为下面的A和B都很好,或者如果您想用A的一个或多个方面编写代码,而这些方面在B中是不可用的,那么JSHint适合您。如果你认为B是唯一正确的选择。。。杰斯林特。我肯定还有其他不同之处,但这突出了一些

    A) 将JSHint传递出去-JSLint失败

    (函数(){
    “严格使用”;
    变量x=0,y=2;
    功能添加(val1、val2){
    返回val1+val2;
    }
    var z;
    
    对于(var i=0;i嗯,我们可以在JS文件本身的顶部包含所有lint设置,而不是手动设置

    声明该文件中的所有全局变量,如:

    /*global require,dojo,dojoConfig,alert */
    
    /*jslint browser:true,sloppy:true,nomen:true,unparam:true,plusplus:true,indent:4 */
    
    声明所有lint设置,如:

    /*global require,dojo,dojoConfig,alert */
    
    /*jslint browser:true,sloppy:true,nomen:true,unparam:true,plusplus:true,indent:4 */
    

    希望这能对您有所帮助:)

    几周前,我遇到了同样的问题,当时正在评估JSLint和JSHint

    与这个问题的答案相反,我的结论不是:

    务必使用JSLint

    或:

    如果你是我
    {
        "preset": "jquery",
        "requireCurlyBraces": null
    }
    
    npm install --save standard
    
    "scripts": {
        "test": "node_modules/.bin/standard && echo put further tests here"
    },