Reputation: 1713
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
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
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
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
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
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
Reputation: 685
Change the calls to three() and two() to return three() and return two().
Upvotes: 2