gpt4 book ai didi

javascript - 在函数之间共享 Javascript 变量

转载 作者:行者123 更新时间:2023-11-30 12:22:32 27 4
gpt4 key购买 nike

所以我有一些变量需要在两个单独的函数中使用。第一个函数本质上是使用变量来计算然后显示一些东西(共轭动词)。第二个函数使用变量来查看用户的答案是否正确,并相应地更改一些 HTML 样式。

然而,这些变量是随机计算的,像这样:

function randomIntFromInterval(min,max) {
return Math.floor(Math.random()*(max-min+1)+min); }

var tense = randomIntFromInterval(1, 6);
var person = randomIntFromInterval(1, 3);
var number = randomIntFromInterval(1, 2);
var voice = randomIntFromInterval(1, 2);

我不能在函数外将它们声明为全局变量,因为每次调用第一个函数时都需要重新计算它们。我不能在它们自己的函数中声明它们并在原来的两个函数中调用它,因为这两个函数需要相同的值。

我该怎么做?

最佳答案

我想您是在问如何在两个函数之间传递值结构。你(可能)不想做的是单独传递每个,尽管如果你只有几个并且它们来自不同的来源,这是一个选项。如果它们来自相同或相似的来源,那么您可以使用具有命名键的对象,例如:

function randomIntFromInterval(min,max) {
return Math.floor(Math.random()*(max-min+1)+min);
}

function getRandomSections() {
return {
tense: randomIntFromInterval(1, 6),
person: randomIntFromInterval(1, 3),
number: randomIntFromInterval(1, 2),
voice: randomIntFromInterval(1, 2)
};
}

function doSomethingWithSections(sections) {
// do some things
}

function doSomethingElseWithSections(sections) {
// do some things
}

// Put it all together
var sections = getRandomSections();
doSomethingWithSections(sections);
doSomethingElseWithSections(sections); // using the same values in a second function

如果他们来自不相关的地方,我会建议使用单独的参数(正如@jfriend00 在评论中所建议的那样)并做:

function doSomethingWith(tense, person, number, voice) {
// do some things
}

doSomethingWithSections(getTense(), getPerson(), getNumber(), getVoice());

如果你想让字段列表有点动态,你可以使 getRandomSections 数据驱动,如:

function getSections(names, cb) {
var obj = {};
names.forEach(function (name) {
obj[name] = cb(x, y);
});
return obj;
}

// Used as
getSections(['tense', 'person', 'number', 'voice'], randomIntFromInterval);

关于javascript - 在函数之间共享 Javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com