2013-11-02 93 views
18

返回兩個變量考慮下面的代碼(demo):在一個功能

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

} 

var test = test(); 

alert(test); 

在執行該函數test僅返回所述第二值(即'World')。我如何讓它返回多個值?

+1

另外:http:// stackoverflow。com/questions/10221445/return-multiple-variables-from-a-javascript-function – bfavaretto

回答

28

您不能顯式地從一個函數返回兩個變量,但有多種方法可以連接這兩個變量以返回它們。

如果您不需要保持變量分離,你可以只將它們連接起來,直接像這樣:

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

這將提醒的「HelloWorld」。 (如果你想在那裏的空間,你應該使用var hw = h+" "+w代替

如果你需要保持分開的兩個變量,你可以把它們放入一個數組,像這樣:

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

這使得hw值分別仍然可以分別訪問,分別爲test[0]test[1],但alert(test)在這裏會顯示「Hello,World」,因爲alert()處理數組的方式(也就是說,它會打印一個以逗號分隔的列表如果你想產生與你的示例代碼相同的輸出,你需要使用類似於的東西。 join()將構造一個數組中的字符串,它需要一個參數作爲元素之間的分隔符。要重現我的第一個示例中的兩個警報,您需要分別使用alert(test.join(""))alert(test.join(" ")

我的示例可以通過跳過hw變量的創建並直接返回數組來輕微縮短。在這種情況下,測試()是這樣的:

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

這也與return { h : h, w : w };對象,在這種情況下,你就可以訪問各個變量test.h和test.w,分別進行。

2

您可以返回一個數組或一個新的對象。

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

} 

var test = test(); 

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

試試這個

+0

如果你在函數參數裏面有參數會怎麼樣呢? – TheAmazingKnight

10

comma operator評估每個操作數,然後返回最後一個的值。

你需要或者返回數組:

return [h, w]; 

...或對象:

return { h : h, w : w }; 

,你會再使用爲:

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

...或:

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