在一个函数中返回两个变量

24

考虑以下代码(演示):

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

}

var test = test();

alert(test);

执行函数test时,只返回第二个值(即'World')。我该如何使其返回多个值?


1
同时,https://dev59.com/umkv5IYBdhLWcg3w91hF - bfavaretto
4个回答

30

你不能直接从一个函数中明确返回两个变量,但有各种方法可以将这两个变量连接起来以便返回它们。

如果不需要保持变量分开,你可以直接将它们连接起来,就像这样:

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);
这允许仍然可以通过 test[0]test[1] 分别访问 hw 值。然而,这里的 alert(test) 将显示 "Hello,World" ,因为 alert() 处理数组的方式(即逐个打印数组中每个元素的逗号分隔列表)。如果您想要生成与示例代码相同的输出,您需要使用类似于 join() 的东西。 join() 将从数组构造一个字符串,它需要一个参数作为元素之间的分隔符。要重现第一个示例中的两个警报,您需要分别使用 alert(test.join(""))alert(test.join(" "))
我的示例可以稍微缩短一下,跳过创建 hw 变量并直接返回一个数组。在这种情况下,test() 会像这样:
function test(){
  var h="Hello";
  var w="World";
  return [h, w];
}

这也可以作为一个对象完成:return { h : h, w : w };,这样你就可以将单独的变量分别作为test.h和test.w来访问。


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

var test = test();

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

一个简单的方法是返回包含多个键值对的对象。


如果函数参数中有参数,应该如何编写? - TheAmazingKnight

13
逗号运算符会对每个操作数进行求值,然后返回最后一个操作数的值。
您需要返回一个数组:
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

3
您可以返回一个数组或者一个新对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接