JavaScript中的双变量赋值

时间:2014-09-21 01:59:20

标签: javascript arrays variables tuples

如果你有一个返回两个值的JavaScript函数,是否可以在一个语句中将这些值分配给两个变量?

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

(var1, var2) = function()

已经尝试了一些我的tres看起来像这样的东西:

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

我也尝试了以下方面:

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

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

我还尝试使用单个数组而不是多个变量,但这会使我后来要完成的工作变得复杂,因为这两个变量用于故事x和y坐标。

3 个答案:

答案 0 :(得分:2)

答案是肯定的,但它只适用于某些浏览器作为实验技术,是Harmony(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 :(得分:1)

你的问题暗示有一种方法可以做到这一点,至少在目前这种情况并非如此。正如PM 77-1所说,JavaScript函数可以返回具有多个属性的数组或对象,但不能返回两个单独的值。

这是两个例子:



var one, two;

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

// Return two values using a plain object 
function bar(a, b) {
	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?

答案 2 :(得分:0)

不,但你可以返回一个数组然后通过数组访问它们

var returnvalues = function(){  

return [value1, value2];  
};