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.
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 way