我有一个名为 config.js 的文件,用作配置文件:
var config = {};
config.defaultCmds = ['modB!', 'addReqs', 'rmReqs', 'listReqs', 'addAdminRole', 'rmAdminRole', 'setHereRequired', 'setCmd', 'commands', 'setDefault', 'replaceReqs'];
config.defaultRaidReqs = [new RegExp('LF[1-5]M|LFG', 'i'), new RegExp('prestige|prest|prest.|normal|anything', 'i'), new RegExp('levi|leviathan|raid|eow|lair|raid lair', 'i'), new RegExp('https://discord.gg/|CR[1-4]', 'i')];
config.defaultCrucibleReqs = [new RegExp('LF[1-4]M|LFG', 'i'), new RegExp('trials|crucible|pvp|quickplay|quick|anything', 'i'), new RegExp('https://discord.gg/|CC[1-5]', 'i')];
config.defaultPveReqs = [new RegExp('LF[1-5]M|LFG', 'i'), new RegExp('prestige|prest|prest.|normal|anything', 'i'), new RegExp('nf|nightfall|anything|rat king|public event|', 'i'), new RegExp('https://discord.gg/|CS[1-4]', 'i')];
config.defaultAdminRoles = ['LEADERSHIP'];
config.defaultHereRequired = false;
config.defaultRaidChannel = "lfg-raid";
config.defaultCrucibleChannel = "lfg-crucible";
config.defaultPveChannel = "lfg-pve";
config.defaultQuestionsChannel = "lfg-questions";
module.exports = config;
在我的主代码中,我试图将变量设置为配置文件中的这些变量,但是每当我更改主代码中的变量时,它也会更改 config.js 中的变量。例如当程序启动时,它是这样的:
const config = require('./config');
cmds = config.defaultCmds;
cmds[0] = 'something';
新打印出来的 cmds[0] 和 config.defaultCmds[0] 现在等于 'something',而不是 cmds[0] 等于 'something' 和 config.defaultCmds[0] 等于 'modB!',如 config. js。
这很有意义,但是将变量设置为另一个文件中的变量是否以某种方式将两者链接在一起,因此如果一个更改另一个更改?
当你做cmds = config.defaultCmds;
cmds
的只是指向同一个数组,它不会创建一个新的数组。
如果要创建新数组,可以执行cmds = config.defaultCmds.slice()
.
现在cmds
是一个新数组,您可以在不影响配置对象的情况下更改其值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句