3

次のコードが与えられます:

function two() {
    return "success";
}

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

関数one()を呼び出してコードをテストすると、常に「失敗」します。

問題は、関数two()を呼び出すだけで、関数one()で「成功」を返すにはどうすればよいかということです。

それも可能ですか?

よろしく

4

4 に答える 4

6
function one() {
   return two();
}
于 2010-10-13T13:07:27.493 に答える
6

Javascript(または他の多くの言語、afaik)で関数を呼び出した関数から関数を返すことはできません。それを行うには、one()にロジックが必要です。例えば:

 function one() {
     return two() || "fail";
 }
于 2010-10-13T13:09:43.020 に答える
3

関数1が非ローカルリターンの可能性を予測し、関数2が例外を使用してこのようになっている場合は、try-catchブロックを使用してこれを行うことができます。

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


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

、 私は信じている。

于 2010-11-09T22:09:28.333 に答える
2
function one() {    
    return two();
}
于 2010-10-13T13:09:12.277 に答える