JSHint: An Community Driven Fork of JSLint
badassjs.com
badassjs.com
Given that, I do agree that JSLint is sometimes more strict but you can change the flags to ignore those warnings if you'd like.
However, JSLint has gotten increasingly more opinionated in the past few months.. For example, the standard for loop: `for (var i = 0, len = arr.length; i < len; i++) { ... ` will now error out in JSLint.
A lot of these sorts of changes don't have flags to customize, so that's something that JSHint aims to fix. Start with some great defaults, and allow them to be customized. Heck, we even save your checkbox preferences for you (via localStorage).
Crock's responses to people asking for changes on the mailing list have also been a little disappointing:
"Your sadly pathetic bleatings are harshing my mellow." http://tech.groups.yahoo.com/group/jslint_com/message/1688
On the github project, he's refused CommonJS convention, NodeJS export support, and Rhino compat -- all quite easy to do. So until Crock's primary JSLint is a bit more friendly to customizability and different environments, JSHint will fulfill those needs.
Problem at line 1 character 6: Move 'var' declarations to the top of the function.
I do prefer having all my vars at the top of the function, loop vars are an exception though.Declaration of variables in the loop could lead to this type of error:
http://cam.ly/blog/2011/01/javascript-interview-question/
(All of the 4 <li> will do alert('4') when clicked, when the programmer expects alert('1'), alert('2'), etc.)
If the variable had been declared at the top, that error probably would not happen.
addEventListener("stuff", function() {
return function(index) {
alert(index);
}
}(i);
is the fix, either wayHowever, the license still contains the following clause:
"The Software shall be used for Good, not Evil."
So it is not using an OSI approved license, and a such I would not consider it open source. That clause adds a restriction on how you can use the software, and a very vague restriction too. Be wary if you intend to include this in an existing project."I give permission for IBM, its customers, partners, and minions, to use JSLint for evil."
Previously posted on HN source: http://wonko.com/post/jsmin-isnt-welcome-on-google-code
I'm guessing Crockford's code is extremely pristine, or that he's never used anyone else's code before.
I challenge anyone to run jslint over one of the many jquery libraries out there. I guarantee that there will be more than 100 errors per library, which is completely useless for debugging with all that noise.
/*jshint maxerr:1000 */
I should probably add it to the docs on jshint.com.