我是一个刚开始学习 JS 的绝对菜鸟,仍在研究如何使用函数。这是我刚开始工作的第一个项目(空闲游戏)的一部分:
function WneededDetermine(Lvl, needed, upgradecost, neededArr, costsArr, mainPower, secondaryPower, multi, lowerMainPower, lowerSecondaryPower, lowerMulti){
switch (true) {
case Lvl >= 15:
needed = 250 * (Lvl - 10);
upgradecost = costsArr[6]*Math.pow(mainPower, Lvl - 14) + multi*(secondaryPower, Lvl - 15);
break;
case Lvl >= 6:
needed = 100 * (Lvl - 4);
upgradecost = (costsArr[5]*Math.pow(lowerPower, Lvl - 5) + lowerMulti*Math.pow(lowerSecondaryPower, Lvl - 6)).toExponential(3);
break;
default:
needed = neededArr[WLvl];
upgradecost = costsArr[WLvl];
break;
return needed;
};
};
然后
setInterval(function(){
var Wneeded = WneededDetermine(WLvl, Wneeded, Wupgradecost, WupgradeLvlarr, Wupgradecosts, 30, 35, 5e13, 8, 12, 100000);
}, 10);
然而,值 Wneeded 和 Wupgradecost(这应该改变)并没有改变。我做错了什么?我完全不知道如何使用函数吗?
编辑:删除了两个返回函数。
好的,首先,一旦您调用“返回”,该功能就完成了。"return ..." 之后的所有内容都不会被执行,所以最后的 2 个 return 语句没有任何意义。下一个大问题是,您正在调用返回某些内容的函数,但您没有保存结果。您必须将函数分配给一个变量,以便实际保存返回的值。
解决这个问题的一种方法是返回一个数组/列表:
return [needed, upgradecost];
这样你只返回一次。现在您必须保存数组中的值:
setInterval(function(){
var returnData = WneededDetermine(WLvl, Wneeded, Wupgradecost, WupgradeLvlarr, Wupgradecosts, 30, 35, 5e13, 8, 12, 100000);
needed = returnData[0];
upgradecost = returnData[1];
}, 10);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句