【问题标题】:js - passing & reurning multiple valuejs - 传递和返回多个值
【发布时间】:2012-01-10 02:36:11
【问题描述】:

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

}   

【问题讨论】:

  • 返回一个值数组? return [ t, y, x, h ]

标签: javascript function parameters


【解决方案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"]
   });
}

【讨论】:

  • 然后将它们引用为 myValues.t[n]?
【解决方案2】:

使用对象可能是你最好的选择:

function getData(t, y, x, h) {
    // ...
    return {
        t: t,
        x: x,
        y: y,
        h: h
    };
} 

然后你可以通过名称访问返回对象中的任何值。

【讨论】:

    【解决方案3】:

    您可以选择将它们作为数组或对象返回,其中对象是更合乎逻辑的选择,因为您可以为属性提供清晰的名称,从而产生更好的代码。

    【讨论】:

      【解决方案4】:

      按照其他人的建议,从函数返回对象是很常见的。我可能会走那条路。对象也更容易处理并且不太可能污染全局范围。

      如果您需要调用示例中的函数,另一种选择是返回一个数组。如果您需要使用 Function.apply 调用返回值的函数,则返回数组会派上用场。 Function.apply 接受一个数组并将其转换为函数参数。

      例如:

      someFunc.apply(this, [t,x,y,h]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-03
        • 1970-01-01
        相关资源
        最近更新 更多