Вернуть логическое значение через несколько функций - PullRequest
4 голосов
/ 12 июля 2010

У меня есть некоторый код Javascript, который должен заканчиваться возвращаемым значением true или false. Однако когда вычисляется значение true / false, исходное значение прошло через несколько функций, например:

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

Очевидно, что в этом примере мало смысла, но он дает общее представление. Что мне нужно сделать, это вернуть значение true (или false) из функции three() полностью обратно в функцию one(), а затем иметь функцию one(), возвращающую это значение тому, кто его вызвал. Я предполагаю, что мне нужно вернуться через функцию two(), чтобы вернуться к одной, есть ли способ, которым я могу сделать это с переменной? Просто идея. Большое спасибо за любую помощь!

Ответы [ 6 ]

5 голосов
/ 12 июля 2010

Вы можете попробовать следующее (если я правильно понял ваш вопрос):

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;
}
2 голосов
/ 12 июля 2010

Измените вызовы на три () и два (), чтобы вернуть три () и вернуть два ().

0 голосов
/ 20 февраля 2013
var txt = 'foo';

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

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

function three(txt) {
    return txt == 'foo'
}
0 голосов
/ 12 июля 2010

Вы можете сделать это, как люди говорили выше, или вы можете объявить переменную вне функций, чтобы она была глобальной и просто ссылаться на нее.Это не считается хорошей практикой, но это будет работать.

0 голосов
/ 12 июля 2010

Если вам нравятся троичные операторы:

function one(txt) {
    return (txt == 'foo') ? two(txt) : false;
}
function two(txt) {
    return (txt == 'foo') ? three(txt) : false;
}
function three(txt) {
    return (txt == 'foo');
}
0 голосов
/ 12 июля 2010

Попробуйте:

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