Return boolean value through multiple functions
Solution 1
You may want to try the following (if I understood your question correctly):
function one(txt) {
if(txt == 'foo') return two(txt);
else return false;
}
function two(txt) {
if(txt == 'foo') return three(txt);
else return false;
}
function three(txt) {
if(txt == 'foo') return true;
else return false;
}
Solution 2
Change the calls to three() and two() to return three() and return two().
Related videos on Youtube
Ben Kulbertis
Updated on April 26, 2022Comments
-
Ben Kulbertis about 2 years
I have some Javascript code that needs to end with either a true or false value being returned. However, when the true/false value is computed, the original value has passed through multiple functions, like so:
var txt = 'foo' function one(txt) { if(txt == 'foo') { two(txt); } } function two(txt) { if(txt == 'foo') { three(txt); } } function three(txt) { if(txt == 'foo') { return true; } else { return false; } }
Obviously this example has little point but it gets the general point across. What I need to do to it is return the
true
(orfalse
) value from functionthree()
all the way back to functionone()
, and then have functionone()
return that value to whatever called it. I am assuming I have to go back through functiontwo()
to get back to one, is there a way I can do this with a variable? Just an idea. Thanks very much for any help!-
Fabio FilippiMaybe I don't get the question but just write
return two(txt);
andreturn three(txt);
won't work?
-
-
Daniel Vassallo almost 14 yearsThat would still return undefined if you pass something other than
foo
to theone()
function. -
tzaman almost 14 years
one
andtwo
also needelse
cases, or they won't return anything when the condition is false. -
Ibrahim Quraish almost 14 yearsYou can coerce to boolean -
return two( new Boolean(txt) );
orreturn two( !!txt );
- without needing the|| false
. -
Daniel Vassallo almost 14 years@Fabio: I removed the
|| false
part. It isn't needed if all functions return either true or false. -
junix about 11 yearsA few more words about why you suggest this code would be nice.
-
BarryBurns about 11 yearsI think it's best because it treats the boolean like any other type. It is also the simplest, needing no if's or else's. The boolean is created with the test in function 3, and passed up the stack.
-
Jack Viers over 10 years@BarryBurns is correct. This is an example of function composition.
one
txt
=== (two
ofthree
)txt
. This is preferable to the boolean early exit examples because you can avoid using a conditional to return a boolean (this is redundant since a boolean condition evaluates to true or false, and it becomes easy to return a contradiction, which is confusing), and also allows the the creation of complex conditionals by composing more functions together.