我无法在javascript return语句中返回多个值。将这些值包装在js对象中会有用吗?或其他解决方案?
function buildSomething()
var t = [];
var x = [];
var y = [];
var h = [];
var myValues = fnGetData(t,y,x,h);
function fnGetData(t,y,x,h)
{
// do something
// return t,y,x,h
}
答案 0 :(得分:1)
仔细查看您的代码,看起来您正试图将多个值传递给一个函数。为此使用对象是JavaScript中常见的习惯用法。
var values = {
t: t,
x: x,
y: y,
h: h
};
它还可以轻松处理默认数据
function fnGetData(data) {
data.t = data.t || [];
data.x = data.x || ["default", "values"];
}
我不确定你是否使用jQuery,但是这也有一个常见的jQuery习惯用法:
function fnGetData(data) {
$.extend(data, {
t: [],
x: ["intial", "values"]
});
}
答案 1 :(得分:1)
使用对象可能是你最好的选择:
function getData(t, y, x, h) {
// ...
return {
t: t,
x: x,
y: y,
h: h
};
}
然后,您可以按名称访问返回对象中的任何值。
答案 2 :(得分:0)
您拥有的选择是将它们作为数组或对象返回,其中对象是更合理的选择,因为您可以为属性提供明确的名称,从而产生更好的代码。
答案 3 :(得分:0)
从其他人建议的函数返回一个对象是很常见的。我可能会走这条路。对象也更容易处理,并且不太可能污染全局范围。
另一个选项,如果你需要像你的例子中那样调用一个函数,就是返回一个数组。如果需要使用Function.apply
调用返回值的函数,则返回数组会派上用场。 Function.apply
接受一个数组并将其转换为函数参数。
例如:
someFunc.apply(this, [t,x,y,h]);