我有一个函数,它返回多个值作为复杂数学的结果。
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())
我知道只保留值而不是参考值,但这是最好的方法吗?
谢谢!
答案 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()