我在javascript中构建游戏,我有多个文件。主文件game.js在开头包含var Game = {};
,例如,upgrades.js在开头包含Game.Upgrades = {};
。现在,我曾经在每个函数的开头执行let item = Game.Upgrades;
,所以不是每次都在Game.Upgrades.upgradeName.cost
执行该函数,例如,我做item.upgradeName.cost
,甚至let item = Game.Upgrades[key];
如果我循环浏览所有升级,或者函数参数正在传递密钥(function buyUpgrade(key) where key = upgradeName
),那么现在我可以调用item.cost;
并为自己保存一些输入。
现在我在思考,为什么在每个函数中声明let item = Game.Upgrades;
,当我可以在Game.Upgrades = {};
之后立即声明它,所以我在声明之后立即添加const UPG = Game.Upgrades;
升级对象。所以现在我只能在代码中使用UPG.upgradeName.cost;
,而不必在每个函数中都使用let item = Game.Upgrades;
。这会是一个更好的解决方案吗?由于每个声明都使用一点内存,对吧?
奇怪的是,如果我在主文件中的const UPG = Game.Upgrades;
下面声明var Game = {};
,它就不起作用......但是,当它在Game.Upgrades = {};
下方声明时它会这使我感到困惑,因为Game.Upgrades = {};
基本上只是Game = { Upgrades: {} };
另外,如果我在upgrades.js文件中声明const,因为它在game.js文件之后加载,我能在game.js文件中使用该const吗?现在它工作正常,但这是一个好习惯吗?我知道我不能这样做。
我应该在我的主game.js文件中堆积所有内容并从那里开始所有内容吗?
所有这些与var,let和const的东西都让我如此困惑。我知道我应该避免使用var,因此我只使用它来声明我的Game对象。我使用let inside函数,但由于我的所有let
- s基本上都是newCost或newDps计算,因此我还要将它们全部更改为const。
有什么见解?前几天我用我的代码使用了JSlint,这只让我更头疼。
谢谢!