所以我需要在两个独立的函数中使用一些变量。 第一个函数主要使用变量来计算然后显示某些东西(一个共轭动词)。第二个函数使用变量来查看用户的答案是否正确,并相应地更改了一些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);
我不能将它们声明为函数外的全局变量,因为每次调用第一个函数时都需要重新计算它们。我无法在自己的函数中声明它们并在原始的两个函数中调用它们,因为这两个函数都需要相同的值。
我该怎么做?
答案 0 :(得分:3)
我想你问的是如何在两个函数之间传递值结构。你(可能)不想做的是单独传递每个,但如果你只有少数几个来自不同的来源,这是一个选项。如果它们来自相同或类似的源,那么您可以使用具有命名键的对象,如:
function $() {
console.log('hi');
}
$()
$
如果他们来自不相关的地方,我会建议使用个人参数(如评论中@jfriend00所建议)并且这样做:
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
如果您想使字段列表有些动态,您可以使function doSomethingWith(tense, person, number, voice) {
// do some things
}
doSomethingWithSections(getTense(), getPerson(), getNumber(), getVoice());
数据驱动如下:
getRandomSections
答案 1 :(得分:0)
你不能做这样的事 -
function randomIntFromInterval(min,max) {
return Math.floor(Math.random()*(max-min+1)+min);
}
function f1(t, p, n, v){ //arguments for function
//something
}
function f2(t, p, n, v){
//something
}
function main(){
var tense = randomIntFromInterval(1, 6);
var person = randomIntFromInterval(1, 3);
var number = randomIntFromInterval(1, 2);
var voice = randomIntFromInterval(1, 2);
f1(tense, person, number, voice);
f2(tense, person, number, voice);
}
main();