Ben Kulbertis
Ben Kulbertis

Reputation: 1713

Return boolean value through multiple functions

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 (or false) value from function three() all the way back to function one(), and then have function one() return that value to whatever called it. I am assuming I have to go back through function two() 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!

Upvotes: 4

Views: 18328

Answers (6)

BarryBurns
BarryBurns

Reputation: 11

var txt = 'foo';

function one(txt) {
   return two(txt); 
}

function two(txt) {
    return three(txt); 
}

function three(txt) {
    return txt == 'foo'
}

Upvotes: 0

Josh K
Josh K

Reputation: 562

Try:

var txt = 'foo'    
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; 
}

Upvotes: 0

Matt Evanoff
Matt Evanoff

Reputation: 966

You can do it like people said above, or you can declare a variable outside the functions so it is global and just refer to it. It is not considered great practice, but it will work.

Upvotes: 0

tzaman
tzaman

Reputation: 47840

If you like ternary operators:

function one(txt) {
    return (txt == 'foo') ? two(txt) : false;
}
function two(txt) {
    return (txt == 'foo') ? three(txt) : false;
}
function three(txt) {
    return (txt == 'foo');
}

Upvotes: 0

Daniel Vassallo
Daniel Vassallo

Reputation: 344511

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;
}

Upvotes: 5

dhorn
dhorn

Reputation: 685

Change the calls to three() and two() to return three() and return two().

Upvotes: 2

Related Questions