2016-04-04 18 views
1

var resultの値は、このコードでどのように取得できますか?javascript:匿名関数から値を返す

私はこれが基本的な問題だと知っていますが、私は3日以来、解決策を探しています。私に何か提案してもらえますか?

だけでなくあなたがコールバックを呼び出して、それの値を返す必要がありますし、あなたの bar関数の内部で、あなたは結果を返す必要が
function foo(myCallback){ 
} 

function bar() { 
    var result = foo(function(){ 
     var result = "hello"; 
     return result; 
    }); 
} 

var showResult = bar(); 
alert(showResult); 
+0

はあなたがそれを得ることができます '' – Rayon

+0

をcallback'

それは、このように動作します関数foo(myCallback){} 関数バー(CB){ FOO(関数(){ VAR結果= "こんにちは"; CB(結果); }); } bar(function(res){ alert(res); }); ' – Rayon

答えて

3

function foo(myCallback){ 
 
    // return the value of the call myCallback() 
 
    return myCallback(); 
 
} 
 

 
function bar(){ 
 
    var result = foo(function(){ 
 
     var result = "hello"; 
 
     return result; 
 
    }); 
 
    // return the result 
 
    return result; 
 
} 
 
var showResult = bar(); 
 
alert(showResult);

それを簡素化ビット可能であれば

function foo(myCallback){ 
 
    return myCallback(); 
 
} 
 

 
function bar(){ 
 
    return foo(function(){ 
 
     return "hello"; 
 
    }); 
 
} 
 
var showResult = bar(); 
 
alert(showResult);

+0

最初の' var result'宣言を 'return'自体に置き換えることさえできます。実際、この場合、すべての 'var result = ...; return result; '' return ... 'と置き換えることができます。 – somethinghere

+0

@somethinghere、yes、editを参照してください。 –

+1

多くのクリーナー:) – somethinghere

2

返品に関する記載がありません。あなたが何を返そうとしているかははっきりしていません。

function foo(myCallback){ 
    return myCallback(); 
} 

function bar(){ 
    var result = foo(function(){ 
     var result = "hello"; 
     return result; 
    }); 
    return result; 
} 
var showResult = bar(); 
alert(showResult); 
0

あなたはコールバックを使用して立ち往生しているが、幸いあなたはコールバック関数にパラメータを渡すことができます:

// define your functions 
function foo(myCallback){ 
    myCallback(); 
} 

function bar(callback){ 
    var result = foo(function(){ 
     var result = "hello"; 
     callback(result); 
    }); 
} 

// now run it 
bar(function(showResult){ 
    alert(showResult); 
});