将全局变量传递给函数以在javascript中重新分配
我试图创建一个助手函数,该函数部分地接受一个全局变量进行重新分配。试图避免使用eval来实现此功能将全局变量传递给函数以在javascript中重新分配,javascript,jquery,variables,functional-programming,Javascript,Jquery,Variables,Functional Programming,我试图创建一个助手函数,该函数部分地接受一个全局变量进行重新分配。试图避免使用eval来实现此功能 let oneQuestionCount, twoQuestionCount, oneQuestionsChecked, twoQuestionsChecked; function hideFadeIn(divToHide, divToShow, countItem = null, checkedItem = null) { $("div#item-" + div
let oneQuestionCount,
twoQuestionCount,
oneQuestionsChecked,
twoQuestionsChecked;
function hideFadeIn(divToHide, divToShow, countItem = null, checkedItem = null) {
$("div#item-" + divToHide).hide();
$("div#item-" + divToShow).fadeIn();
if (countItem) {
countItem = $("div#item-" + divToShow + " :input").length; // want the global var to be changed not the function scope var
}
if (checkedItem) {
checkedItem = $("div#item-" + divToHide + " :checked").length; // want the global var to be changed not the function scope var
}
hideFadeIn(
"one",
"two",
twoQuestionCount, // how to pass in and change globally?
oneQuestionsChecked // how to pass in and change globally?
);
console.log(twoQuestionCount, oneQuestionsChecked); // should be reassinged value by the function.
需要分配多个函数调用和其他全局变量,因此需要使用helper函数。例如:hideFadeIn(“一个”、“两个”、两个问题计数、一个问题检查);然后hideFadeIn(“两个”、“三个”、三个问题计数、两个问题检查);然后hideFadeIn(“三”,“四”,三个问题计数,四个问题检查);等等。你不能那样做。当您将
twoQuestionCount
传递到hideFadeIn
中时,传递的是它的值,而不是变量
如果愿意,可以将它们放入对象中,然后传入对象:
let whatever = {
oneQuestionCount: 0,
twoQuestionCount: 0,
oneQuestionsChecked: 0,
twoQuestionsChecked: 0
};
然后
hideFadeIn
可以更改它接收的对象的属性。您不能这样做。当您将twoQuestionCount
传递到hideFadeIn
中时,传递的是它的值,而不是变量
如果愿意,可以将它们放入对象中,然后传入对象:
let whatever = {
oneQuestionCount: 0,
twoQuestionCount: 0,
oneQuestionsChecked: 0,
twoQuestionsChecked: 0
};
然后
hideFadeIn
可以更改它接收的对象的属性。因此,假设这些属性是全局的,您可以更改它们,而无需将它们传入。。。。。为什么?Bc我需要通过很多问题,而不仅仅是1或2。不。。。。它们是全球性的。你明白全球是什么意思,是吗?否则,您需要更清楚地解释问题所在。因为正如目前所写的,听起来你是在试图解决一个自我强加的问题。是的,我是这样做的,但我需要传递指针以便重新分配。因为我将有大量的函数调用,所以我需要一种方法来关闭目标GV。所以,我可以传递文本,然后评估它,可能是进入GV的指针,或者我正试图将GV引用传递给函数。例如:hideFadeIn(“一个”、“两个”、两个问题计数、一个问题检查);然后hideFadeIn(“两个”、“三个”、三个问题计数、两个问题检查);然后hideFadeIn(“三”,“四”,三个问题计数,四个问题检查);等等……然后将变量结构更改为T.J.在其答案中的方式,以避免eval()
。如果他的例子中的无论什么都是全局的,你仍然不需要将它传递给方法。因此,假设它们是全局的,你可以在不传递它们的情况下更改它们。。。。。为什么?Bc我需要通过很多问题,而不仅仅是1或2。不。。。。它们是全球性的。你明白全球是什么意思,是吗?否则,您需要更清楚地解释问题所在。因为正如目前所写的,听起来你是在试图解决一个自我强加的问题。是的,我是这样做的,但我需要传递指针以便重新分配。因为我将有大量的函数调用,所以我需要一种方法来关闭目标GV。所以,我可以传递文本,然后评估它,可能是进入GV的指针,或者我正试图将GV引用传递给函数。例如:hideFadeIn(“一个”、“两个”、两个问题计数、一个问题检查);然后hideFadeIn(“两个”、“三个”、三个问题计数、两个问题检查);然后hideFadeIn(“三”,“四”,三个问题计数,四个问题检查);等等……然后将变量结构更改为T.J.在其答案中的方式,以避免eval()
。如果他的例子中的which
是全局的,您仍然不必将其传递给该方法。