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

时间:2013-11-02 02:05:05

标签: javascript function

考虑以下代码(demo):

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

}

var test = test();

alert(test);

执行时,函数test仅返回第二个值(即'World')。如何让它返回多个值?

4 个答案:

答案 0 :(得分:29)

您无法从单个函数显式返回两个变量,但是有多种方法可以连接这两个变量以便返回它们。

如果您不需要将变量分开,您可以直接将它们连接起来:

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);

这样,hw值仍然可以分别作为test[0]test[1]单独访问。但是,这里的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的形式访问各个变量。

答案 1 :(得分:16)

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

}

var test = test();

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

试试这个

答案 2 :(得分:11)

comma operator计算每个操作数,然后返回最后一个操作数的值。

您需要返回一个数组:

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 :(得分:3)

您可以返回数组或新对象。