2014-09-21 63 views
-2

如果您有一個返回兩個值的JavaScript函數,是否可以將這些值分配給單個語句中的兩個變量?JavaScript中的雙重變量分配

例如,在Python它可能看起來像:

(var1, var2) = function() 

嘗試了幾件事情我特雷斯是這樣的:

this.(var1, var2) = function(); 

我也試着沿東西線:

this.var1, this.var2 = function(); 

and

this.var1 = this.var2 = function(); 

我也試過使用單個數組而不是多個變量,但它會使我稍後想要完成的事情複雜化,因爲這兩個變量用於故事x和y座標。

+0

任何想法?你應該在詢問之前嘗試。 – Popnoodles 2014-09-21 02:00:54

+0

您是否嘗試編寫一個返回兩個單獨值的JavaScript函數? – ajp15243 2014-09-21 02:03:03

+0

這是否有助於var1 = var2 = function()? – andrex 2014-09-21 02:03:27

回答

0

沒有,但你可以返回一個數組,然後通過數組訪問它們

var returnvalues = function(){ 

return [value1, value2]; 
}; 
+0

好吧有人下來投了我之前,我可以更新我的答案。我誤解了這個問題 – 2014-09-21 02:08:54

+0

人們在這個網站上無情。讓我們一些沒有名譽的人至少有機會。我很快更新了我對正確解決方案的回答。 – 2014-09-21 02:13:32

+0

人們並不總是回來檢查他們的downvotes,看看他們是否應該被刪除,因爲更新/更正,所以你可能只需要忍受它不幸。 – ajp15243 2014-09-21 02:13:52

2

答案是肯定的,你可以,但只在某些瀏覽器工作原理的實驗技術,和諧的一部分( ECMAScript 6)的提案,所以在發佈這個答案時不推薦使用

Destructuring assignment docs

function foo(){ 
    return ["one", "two", "three"]; 
} 

var [one, two, three] = foo(); 

您可以在兩行,我明白是不是你想要的,但它的工作原理做。

var foo = foo(); 
var one = foo[0], two = foo[1], three = foo[2]; 
1

你的問題意味着有一種方法可以做到這一點,至少目前不是這樣。正如PM 77-1所說,一個JavaScript函數可以返回一個數組或一個具有多個屬性的對象,但不能返回兩個單獨的值。

這裏有兩個例子:

var one, two; 
 

 
// Return two values using an array 
 
function foo(a, b) { 
 
\t return [a, b]; 
 
} 
 

 
// Return two values using a plain object 
 
function bar(a, b) { 
 
\t return { one: a, two: b }; 
 
} 
 

 
// Assign by index 
 
var testOne = foo(1, 2); 
 
one = testOne[0], two = testOne[1]; 
 

 
// Assign by properties 
 
var testTwo = bar(1, 2); 
 
one = testTwo.one, two = testTwo.two;

我也想補充這是一個重複的問題,請參見:Return multiple values in JavaScript?

+0

鑑於在你的答案的底部鏈接的問題已經本身是另一個重複,我會鏈接[原始問題](http:// stackoverflow.com/q/2917175/1883647)。 – ajp15243 2014-09-21 02:33:31