博士TL;
如果您正在为自己或您的团队寻找一个非常高的标准,请使用JSLint,但请记住,它不一定是标准,只是一个标准,其中一些标准教条地来自Doug Crockford。
如果您想要更灵活一点,或者您的团队中有一些老专家不接受JSLint的观点,或者经常在JavaScript和其他c家族语言之间来回切换,请尝试JSHint。
完整版
有两篇文章解释了JSHint存在的原因:
JSHint: JSLint的一个社区驱动的分支
为什么我把JSLint分叉到JSHint
JSLint背后的理念是它是社区驱动的,而不是crockford驱动的。JSHint通常对JSLint坚持的一些风格和次要语法意见更宽容(或者至少是可配置的或不确定的)。
例如,如果你认为两者都是1。和2。下面是很好的,或者如果你想用1中的一个或多个来编写代码。在2中没有的方面。, JSHint是给你的。如果你认为2。是唯一正确的选择,使用JSLint。我相信还有其他不同之处,但这里突出了一些。
从盒子里传递JSHint - JSLint失败
(函数(){
“使用严格的”;
Var x=0, y=2;
函数add(val1, val2){
返回val1 + val2;
}
var z;
For (var i=0;我< 2;我+ +){
Z = add(y, x+i);
}
}) ();
同时传递JSHint和JSLint
(函数(){
“使用严格的”;
Var x = 0, y = 2, i, z;
函数add(val1, val2) {
返回val1 + val2;
}
For (i = 0;I < 2;I += 1) {
Z = add(y, x + i);
}
} ());
我发现JSLint代码在视觉上更吸引人。我唯一不同意的特性是它讨厌在一个函数中声明多个var,讨厌for-loop var I = 0声明,以及对函数声明的一些空格强制。
A few of the whitespace things that JSLint enforces are not necessarily bad but are just out of sync with some pretty standard whitespace conventions for other languages in the family (C, Java, Python, etc.) often followed as conventions in Javascript as well. Since I'm writing in various of these languages throughout the day and working with team members who don't like Lint-style whitespace in our code, I find JSHint to be a good balance. It catches legitimate bugs and very badly formed code, but doesn't bark at me like JSLint does (sometimes, in ways I can't disable) for the stylistic opinions or syntactic nitpicks that I don't care for.
很多好的库都不能使用Lint,这对我来说证明了JSLint只是推出一个版本的“好代码”(这确实是好代码)的想法是有道理的。但是,同样的库(或其他好的库)可能也不具备Hint'able,因此,touché。