考虑以下代码(演示):
function test(){
var h = 'Hello';
var w = 'World';
return (h, w);
}
var test = test();
alert(test);
执行函数test
时,只返回第二个值(即'World'
)。我该如何使其返回多个值?
考虑以下代码(演示):
function test(){
var h = 'Hello';
var w = 'World';
return (h, w);
}
var test = test();
alert(test);
执行函数test
时,只返回第二个值(即'World'
)。我该如何使其返回多个值?
你不能直接从一个函数中明确返回两个变量,但有各种方法可以将这两个变量连接起来以便返回它们。
如果不需要保持变量分开,你可以直接将它们连接起来,就像这样:
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]
分别访问 h
和 w
值。然而,这里的 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来访问。
function test(){
var h = 'Hello';
var w = 'World';
return {h:h,w:w}
}
var test = test();
alert(test.h);
alert(test.w);
一个简单的方法是返回包含多个键值对的对象。
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