Пусть функция "вернет" супер функцию? - PullRequest
3 голосов
/ 13 октября 2010

Дан следующий код:

function two() {
    return "success";
}

function one() {
    two();
    return "fail";
}

Если вы проверите код, вызвав функцию one (), вы всегда получите «fail».

Вопрос в том, какЯ возвращаю «success» в функции one (), вызывая только функцию two ()?

Возможно ли это?

С уважением

Ответы [ 4 ]

6 голосов
/ 13 октября 2010

Вы не можете сделать функцию, возвращаемую из функции, которая вызывала ее в Javascript (или во многих других языках, afaik). Вам нужна логика в одном (), чтобы сделать это. E.g.:

 function one() {
     return two() || "fail";
 }
6 голосов
/ 13 октября 2010
function one() {
   return two();
}
3 голосов
/ 10 ноября 2010

Вы можете сделать это, используя блок try-catch, если ваша функция one ожидает вероятного нелокального возврата, а также function two , как это, используя исключения:

function two() {
  throw {isReturn : true, returnValue : "success"}
}


function one () {
  try {
    two()
  } catch(e) {
    if(e.isReturn) return e.returnValue;
  }
  return "fail";
 }

, я верю.

2 голосов
/ 13 октября 2010
function one() {    
    return two();
}
...