js - 传球和;返回多个值

时间:2012-01-10 02:36:12

标签: javascript function parameters

我无法在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

}   

4 个答案:

答案 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]);