2012-04-19 116 views
11

在蟒蛇,返回多個變量,我可以做 -從JavaScript函數返回多個變量?

def function_one(i): 
    return int(i), int(i) * 2 

value, duble_value = function_one(1) 

我將如何實現使用javascript如果函數只能返回一個返回值此相同的結果? (我假設使用數組?)

+1

技術上你返回一個元組* *在這兩個領域,這仍然是一個單一的值。我不熟悉Javascript,但是如果有某種可以使用的數組或結構,那就很理想。 – Makoto 2012-04-19 03:58:06

+3

如果你要返回的兩個整數是素數,你可以返回他們的產品。 :P – 2012-04-19 03:59:00

+1

真琴的評論是一個非常好的評論。 ** Python只能返回一個值* JavaScript沒有'tuple'類型,因此可以使用Objects(例如'dict')或Arrays(例如'list')作爲替換。另外,JavaScript沒有序列解包(這使得Python中的'x,y = tuple'成爲可能),因此分解必須長期完成。 – 2012-04-19 04:02:07

回答

30

您需要使用數組或對象。

例如:

function test() { 
    return {foo: "bar", baz: "bof"}; 
} 

function test2() { 
    return ["bar", "bof"]; 
} 

var data = test(); 
foo = data.foo; 
baz = data.baz; 

data = test2(); 
foo = data[0]; 
baz = data[1]; 
+0

另一個選擇(但不是很好):'功能測試(ret){ret.a = 42; ret.b = 43; }' – 2012-04-19 04:00:07

+1

@AtesGoral當傳入「非對象」類型時不起作用(並且如果沒有提供參數,將會是一個討厭的異常)。這也讓我想吐一點。 – 2012-04-19 04:04:29

+0

@pst這假設有人故意傳入一個對象。此方法有其用處,尤其是當您將一組參數從多個來源收集到相同的池(對象)時。 – 2012-04-19 04:13:49

-1
function foo(){ 
    return ["something","something else","something more","something further"]; 
} 

let [a,b,c,d] = foo(); 
+1

雖然這段代碼可以解決這個問題,[包括解釋](http://meta.stackexchange。 com/questions/114762/explain-completely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – 2017-08-04 23:03:01