JSHint started life as a fork of JSLint. It retains much of the same functionality, to the point you can configure it to behave almost exactly as JSLint does.
A few warnings from JSLint have been removed from JSHint, but these tend to be ones that give little benefit to you. Off the top of my head, one of these warnings is "Unexpected 'else' after disruption", which warns you that you have a redundant else
block following a return
or throw
statement:
if (x) {
return y;
} else { // This `else` block is unnecessary
return z;
}
It is reasonable to use both JSLint and JSHint if you need to cover situations like this. But on the whole, it is usually possible to configure JSHint to cover all situations you are concerned about.