Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does JSLint complain about "Unexpected 'else' after 'return'"?

JSLint complains that the following (useless example) code is invalid:

(function (x) {     "use strict";     if (x === 1) {         return 1;     } else if (x === 2) {         return -1;     }     return 0; }(1)); 

Error: Problem at line 4 character 9: Unexpected 'else' after 'return'.

return 1;

Is it seriously suggesting that it's bad to use return statements inside an if/else structure?

It thinks this version is fine:

(function (x) {     "use strict";     var returnval = 0;     if (x === 1) {         returnval = 1;     } else if (x === 2) {         returnval = -1;     }     return returnval; }(1)); 
like image 919
Hal Avatar asked Feb 28 '12 11:02

Hal


2 Answers

It's just telling you that else after return is superfluous. The following is fine:

(function (x) {     "use strict";     if (x === 1) {         return 1;     }       if (x === 2) {         return -1;     }     return 0; }(1)); 
like image 87
georg Avatar answered Oct 02 '22 23:10

georg


What I've found w/ jslint is that if you adhere to the rules - 50% are ridiculous yet have no negative impact on your code. The other 50% ( or so ) will give you a good benefit. So do it for the other 50%. This particular example forces you to be explicit about the inverse of a condition or similar...instead of letting it be implicit with an else...same applies to if / else I mean.

like image 37
morph_master_flex Avatar answered Oct 03 '22 00:10

morph_master_flex