如果你有一个返回两个值的JavaScript函数,是否可以在一个语句中将这些值分配给两个变量?
例如,在Python中它可能看起来像:
(var1, var2) = function()
我已经尝试了一些我的tres看起来像这样的东西:
this.(var1, var2) = function();
我也尝试了以下方面:
this.var1, this.var2 = function();
和
this.var1 = this.var2 = function();
我还尝试使用单个数组而不是多个变量,但这会使我后来要完成的工作变得复杂,因为这两个变量用于故事x和y坐标。
答案 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];
};