Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
10
rated 0 times [  15] [ 5]  / answers: 1 / hits: 94995  / 14 Years ago, wed, september 15, 2010, 12:00:00

I'm refactoring a large javascript document that I picked up from an open source project. A number of functions use inconsistent return statements. Here's a simple example of what I mean:



var func = function(param) {
if (!param) {
return;
}
// do stuff
return true;
}


Sometimes the functions return boolean, sometimes strings or other things. Usually they are inconsistently paired with a simple return; statement inside of a conditional.



The problem is that the code is complex. It is a parser that uses a multitude of unique RegEx matches, creates and destroys DOM nodes on the fly, etc. Preliminary testing shows that, in the above example, I could change the return; statement to become return false;, but I'm concerned that I may not realize that it had a negative impact (i.e. some feature stopped working) on the script until much later.



So my questions: Is there a benefit to using a blank return statement? Could this have been intentionally coded this way or was it just lazy? Can I change them all to return false;, or return null; or do I need to dig through every call and find out what they are doing with the results of those functions?


More From » refactoring

 Answers
27

Using return without a value will return the value undefined.



If the value is evaluated as a boolean, undefined will work as false, but if the value for example is compared to false, you will get a different behaviour:



var x; // x is undefined
alert(x); // shows undefined
alert(!x); // shows true
alert(x==false); // shows false


So, while the code should logically return true or false, not true or undefined, you can't just change return; to return false; without checking how the return value is used.


[#95617] Monday, September 13, 2010, 14 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
guadalupec

Total Points: 610
Total Questions: 91
Total Answers: 91

Location: Guernsey
Member since Tue, Jul 6, 2021
3 Years ago
;