从函数中检索多个值

时间:2015-07-07 04:55:22

标签: javascript jquery

我有一个函数,它返回多个值作为复杂数学的结果。

var getData = function () {
var a=Math.somethingReallyDifficultToCalculate
var b=Math.anotherDifficultThingToCalculate
return {a: a, b: b}
}
然后我想要检索这样的数据:

var result = getData()
console.log(result.a,result.b)

我的程序会同时运行整个函数还是var结果只保留值?结果会被缓存吗? 如果此代码将运行该函数两次,那么保留值而不是引用本身的好方法是什么?

我知道我可以使用:

var result = $.extend({},getData())
我知道

只保留值而不是参考值,但这是最好的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

它只运行一次该功能。

执行此操作后:

var result = getData();

...... getData()功能完成了它的工作。

建议:您应该使用分号(;)终止语句。如果您不使用它们,那么Javascript将自动插入它们,这可能会导致各种意外问题。

答案 1 :(得分:-1)

为什么不尝试使用面向对象的符号

像这样。

var getData = {
    a : null,
    b : null,
    c: null,
    setVal : function(){
        this.a = Math.somethingReallyDifficultToCalculate;
        this.b = Math.anotherDifficultThingToCalculate;
        this.c = 10;
    },
    getVal : function(){
        return {a: this.a, b: this.b,c:this.c};
    }
};

getData.setVal()
var result = getData.getVal()

每当您调用 getVal 时,您都会获得保存的值,如果您想更改值 setVal

此外,您可以在调用 setVal 时传递参数来设置值,这是最好的方法。

所以这样的最终代码,

var getData = {
    a : null,
    b : null,
    c: null,
    setVal : function(a,b,c){
        this.a = a;
        this.b = b;
        this.c = c;
    },
    getVal : function(){
        return {a: this.a, b: this.b,c:this.c};
    }
};

var a = Math.somethingReallyDifficultToCalculate;
var b = Math.anotherDifficultThingToCalculate;

getData.setVal(a,b,30)
var result = getData.getVal()