tl; dr wynos :
Jeśli szukasz bardzo wysokiego standardu dla siebie lub zespołu, JSLint. Ale niekoniecznie jest to standard, tylko standard, z których część pochodzi od nas dogmatycznie od boga javascript o imieniu Doug Crockford. Jeśli chcesz być bardziej elastyczny lub mieć w zespole kilku starych profesjonalistów, którzy nie kupują opinii JSLint lub regularnie przechodzą między JS a innymi językami rodziny C, wypróbuj JSHint.
długa wersja :
Rozumowanie za rozwidleniem całkiem dobrze wyjaśnia, dlaczego istnieje JSHint:
http://badassjs.com/post/3364925033/jshint-an-community-driven-fork-of-jslint http://anton.kovalyov.net/2011/02/20/why-i-forked-jslint-to -jshint /
Myślę, że pomysł polega na tym, że „napędzany jest przez społeczność”, a nie Crockford. W praktyce JSHint jest ogólnie nieco łagodniejszy (lub przynajmniej konfigurowalny lub agnostyczny) w oparciu o kilka stylistycznych i drobnych „syntez” opinii, na których JSLint jest zwolennikiem.
Na przykład, jeśli uważasz, że oba A i B poniżej są w porządku, lub jeśli chcesz napisać kod z jednym lub kilkoma aspektami A, które nie są dostępne w B, JSHint jest dla Ciebie. Jeśli uważasz, że B jest jedyną poprawną opcją ... JSLint. Jestem pewien, że istnieją inne różnice, ale to podkreśla kilka.
A) Odrzuca JSHint po wyjęciu z pudełka - nie działa JSLint
(function() {
"use strict";
var x=0, y=2;
function add(val1, val2){
return val1 + val2;
}
var z;
for (var i=0; i<2; i++){
z = add(y, x+i);
}
})();
B) Przechodzi zarówno JSHint, jak i JSLint
(function () {
"use strict";
var x = 0, y = 2, i, z;
function add(val1, val2) {
return val1 + val2;
}
for (i = 0; i < 2; i += 1) {
z = add(y, x + i);
}
}());
Osobiście uważam, że kod JSLint jest bardzo ładny, a jedynymi trudnymi cechami, z którymi się nie zgadzam, jest nienawiść do więcej niż jednej deklaracji var w funkcji i var i = 0
deklaracji for-loop , a także niektóre z wymuszonych białych znaków dla deklaracji funkcji .
Niektóre z białych znaków, które wymusza JSLint, niekoniecznie są złe, ale niezsynchronizowane z niektórymi standardowymi konwencjami białych znaków dla innych języków w rodzinie (C, Java, Python itp.), Które są często przestrzegane również jako konwencje w Javascript. Ponieważ piszę w różnych z tych języków w ciągu dnia i pracuję z członkami zespołu, którzy nie lubią białych znaków w stylu Lint w naszym kodzie, uważam, że JSHint zapewnia dobrą równowagę. Łapie rzeczy, które są uzasadnionym błędem lub naprawdę złą formą, ale nie szczeka na mnie, jak robi to JSLint (czasami w sposób, którego nie mogę wyłączyć) za opinie stylistyczne lub nitpicks składniowe, na których mi nie zależy.
Wiele dobrych bibliotek nie obsługuje Lint'able, co dla mnie pokazuje, że istnieje pewna prawda, że JSLint polega po prostu na wypuszczeniu 1 wersji „dobrego kodu” (który jest rzeczywiście dobrym kodem). Ale z drugiej strony te same biblioteki (lub inne dobre) prawdopodobnie również nie są podpowiedziami, więc touché.
Combine this with the previous 'var' statement
->Do not mix 'require' and other declarations
, paradoks.