2017-08-29 1 views
-1

So habe ich 3 Funktionen. Was ich erreichen möchte, ist, Wert von einer Funktion zu nehmen, die in der Elternfunktion verschachtelt ist, und die es als das Argument in der dritten Funktion übergeben. Und kann dies mit näher erreicht werden, und wie? Vielen Dank.Wie man Wert von der Funktion nimmt, die in einer anderen Funktion ist, als Argument der abschließenden Funktion

function foo() { 
    var rand = 10; 
    function bar() { 
     return { 
      age:rand; 
     } 
    } 
} 

function addValue(arg) { 
    console.log(bar()); 
} 
+1

Das macht keinen Sinn, dann ist dies Ihre eigentliche Problem vor Menschen, die Sie zeigen, wie der Prototyp abzustreifen (es ist möglich, was Sie wollen, einfach keinen Spaß oder intuitive IMO)? Versuchen Sie und schreiben Sie Ihr tatsächliches, genaues Problem. – kabanus

+0

Meinten Sie "* ... erreicht mit ** Schließung ***"? Ja. – Bergi

+0

@kabanus der Code ist wirklich lang, ich frage nur nach praktischen Beispiel, so kann ich meinen Kopf um neue Sachen wickeln. Außerdem, wenn Sie den Code gepostet haben, würden Sie alles überprüfen, und sagen Sie mir, wie alles falsch ist, und ich muss es Entwurfsmuster schreiben, die anderen Teile sind redandant. Also ich kann wirklich nicht verstehen, warum hast du mich gewählt und diese Einstellung, so unhöflich. – NemanjaD

Antwort

1

Anruf wie unten

function foo() { 
    var rand = 10; 
    return function bar() { 
     return { 
      age:rand 
     } 
    }(); 
} 

function addValue(arg) { 
    console.log(foo()); 
    } 

Edited

function foo (func) { 
     var rand = 10; 
     function bar() { 
      return { 
      age:rand 
      } 
     }; 
    //Do your stuff 

    return eval(func+"()"); 
} 

function addValue(arg) { 
    console.log(foo("bar")); 
} 
+0

Hallo danke, kann es ohne return statement erreicht werden, weil ich einen anderen Block Code innerhalb foo() -Funktion ausgeführt habe? – NemanjaD

+0

Setzen Sie den Rückgabewert unten in 'foo'. – evolutionxbox

+0

Überprüfen Sie den bearbeiteten Code, Sie können mehr chile-Funktion schreiben und den Namen als Parameter in der übergeordneten Funktion "foo" übergeben, um den Wert von chile zu erhalten –

0

Sie können stattdessen die Funktion auf das Objekt übergeordneten zuordnen und es so nennen.

function foo(){ 
 
\t var rand = 10; 
 
\t this.bar = function(){ 
 
\t \t return {age: rand}; 
 
\t } 
 
} 
 

 
var obj = new foo(); 
 
function addVal() { 
 
\t console.log(obj.bar()); 
 
} 
 

 
addVal();

Verwandte Themen