Ranked in these QuestionsQuestion Ranking
Pro Customizable ruleset
Since it's creation, JSHint was created to be a more configurable version of JSLint (it's actually a fork of JSLint itself). Every rule is configurable through a configuration file.
Pro Comes with support for many librariers
JSHint supports libraries like QUnit, NodeJS, jQuery, Mocha out of the box.
Pro Basic ES6 support
Basic ES6 support is included.
Pro Good ES6 support
Pro Highly flexible ruleset
ESLint allows customizing rules for errors, best practices, variable declarations, ES6, style and JS running on Node. Additionally, custom rules can be applied.
Pro Functionality can be extended with a wide variety of plugins
A wide variety of plugins are available on npm's repository.
Pro Clear warnings and error messages
Warnings and error messages are detailed and easy to understand because of the usage of natural language throughout all warnings and messages.
For each message, the rule name is given so you can know what rule is being broken.
Pro JSX support
Con No way to support ESnext
There's no support for ESnext available.
Con Difficult to know which rule is causing an error
Because it does not display the rule name that is being broken, it's difficult to know which rule is actually causing the error.
Con Requires some configuration before use
Con The documentation can be a hit or miss
ESLint's documentation is very detailed and helpful in some parts, while in others it gets a little confusing.
For example, the rules list is easy to follow and is grouped into logical categories, while the configuration tutorials can get a little confusing.