将全局变量传递给函数以在javascript中重新分配

将全局变量传递给函数以在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

我试图创建一个助手函数,该函数部分地接受一个全局变量进行重新分配。试图避免使用eval来实现此功能

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
是全局的,您仍然不必将其传递给该方法。