2013-11-02 8 views
18

Betrachten wir den folgenden Code (demo):Return zwei Variablen in einer Funktion

function test(){ 
    var h = 'Hello'; 
    var w = 'World'; 
    return (h, w); 

} 

var test = test(); 

alert(test); 

Bei Ausführung der Funktion test nur den zweiten Wert zurückgibt (d.h. 'World'). Wie kann ich mehrere Werte zurückgeben?

+1

Auch: http: // stackoverflow.com/questions/10221445/return-multiple-variables-from-a-javascript-funktion – bfavaretto

Antwort

28

Sie können nicht explizit zwei Variablen aus einer einzelnen Funktion zurückgeben, aber es gibt verschiedene Möglichkeiten, die beiden Variablen zu verketten, um sie zurückzugeben.

Wenn Sie die Variablen getrennt nicht halten müssen, können Sie sie einfach direkt wie folgt verketten:

function test(){ 
    var h = 'Hello'; 
    var w = 'World'; 
    var hw = h+w 
    return (hw); 
} 
var test = test(); 
alert(test); 

Dieses „Hello World“ würde alarmieren. (Wenn Sie einen Raum dort wollten, sollten Sie var hw = h+" "+w stattdessen

Wenn Sie die beiden Variablen getrennt halten müssen, können Sie sie in ein Array platzieren wie so:.

function test(){ 
    var h = "Hello"; 
    var w = "World"; 
    var hw=[h,w]; 
    return hw; 
} 
var test = test(); 
alert(test); 

Dies ermöglicht die h und w Werte immer noch individuell zugegriffen werden als test[0] und test[1]. Allerdings wird Alert (Test) hier angezeigt "Hallo, Welt" wegen der Art, wie alert() behandelt Arrays (dh es druckt eine durch Kommas getrennte Liste von jedes Element im Array der Reihe nach.) Wenn Sie die gleiche Ausgabe wie in Ihrem Beispielcode erzeugen möchten, müssen Sie etwas wieverwenden. join() wird eine Zeichenfolge aus einem Array erstellen, es braucht ein Argument, das als Trennzeichen zwischen den Elementen dient. Um die beiden Warnungen aus meinem ersten Beispiel zu reproduzieren, müssten Sie alert(test.join("")) bzw. alert(test.join(" ") verwenden.

Mein Beispiel könnte leicht verkürzt werden, indem man die Erstellung der hw Variable überspringt und nur ein Array direkt zurückgibt. In diesem Fall Test() würde wie folgt aussehen:

function test(){ 
    var h="Hello"; 
    var w="World"; 
    return [h, w]; 
} 

Dies auch als Objekt mit return { h : h, w : w };, wobei in diesem Fall getan werden könnte, um die einzelnen Variablen wie test.h und test.w jeweils zugreifen würde.

2

Sie können ein Array oder ein neues Objekt zurückgeben.

15
function test(){ 
var h = 'Hello'; 
var w = 'World'; 
return {h:h,w:w} 

} 

var test = test(); 

alert(test.h); 
alert(test.w); 

Versuchen Sie, diese

+0

Was wäre, wenn Sie Argumente innerhalb der Funktionsparameter hätten, wie würde dies geschrieben werden? – TheAmazingKnight

10

Die comma operator jeden Operanden auswertet und gibt dann den Wert des letzten.

Sie müssen entweder ein Array zurück:

return [h, w]; 

... oder ein Objekt:

return { h : h, w : w }; 

Welche würden Sie dann verwenden:

var test = test(); 
alert(test[0]); // "hello" - in the case of the array version 

... oder:

var test = test(); 
alert(test.w); // "world" in the case of the object version 
Verwandte Themen