Передать глобальную переменную в функцию для переназначения в JavaScript - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь создать вспомогательную функцию, которая частично принимает глобальную переменную для переназначения.Попытка избежать использования 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.

Будет многократные вызовы функций и другие глобальные переменные, которые должны быть назначены - следовательно, вспомогательная функция.например: hideFadeIn («один», «два», twoQuestionCount, oneQuestionsChecked);затем hideFadeIn («два», «три», threeQuestionCount, twoQuestionsChecked);затем hideFadeIn («три», «четыре», threeQuestionCount, fourQuestionsChecked);и т.д ...

1 Ответ

2 голосов
/ 05 июня 2019

Вы не можете этого сделать. Когда вы передаете twoQuestionCount в hideFadeIn, передается значение , а не переменная.

Если хотите, вы можете поместить их в объект, а затем передать в объект:

let whatever = {
    oneQuestionCount: 0,
    twoQuestionCount: 0,
    oneQuestionsChecked: 0,
    twoQuestionsChecked: 0
};

1010 * тогда *

hideFadeIn("one", "two", whatever);

hideFadeIn может изменить свойства получаемого объекта.

...