Javascript 如果出现条件,则停止执行IIFE

Javascript 如果出现条件,则停止执行IIFE,javascript,iife,Javascript,Iife,我正在尝试构建一个为用户工作周制定计划的应用程序,除了用户输入重复的错误显示时间外,一切都正常,但我的问题是应用程序仍在运行,计划显示在UI中 因此,我尝试使用return关键字来阻止应用程序继续工作,但没有奏效,因此下面是我的代码: JavaScript: var internalController = (function(UICtrl) { var Plan = function(id, from, to, text, goingToCkecked) { this.id =

我正在尝试构建一个为用户工作周制定计划的应用程序,除了用户输入重复的错误显示时间外,一切都正常,但我的问题是应用程序仍在运行,计划显示在UI中

因此,我尝试使用
return
关键字来阻止应用程序继续工作,但没有奏效,因此下面是我的代码:

JavaScript:

var internalController = (function(UICtrl) { 
  var Plan = function(id, from, to, text, goingToCkecked) {
    this.id = id;
    this.from = from;
    this.to = to;
    this.text = text;
    this.goingToCkecked = goingToCkecked;
  };

  var data = {
    Monday: [],
    Tuesday: [],
    Wednesday: [],
    Thursday: [],
    Friday: [],
    Saturday: [],
    Sunday: []
  };

  //the array of the from inputs
  var fromT = [];

  //the array of the to inputs
  var toT = [];

  var Dom = UICtrl.getDOMstrings();

  function removeError(x, y) {
    document.querySelector(x).style.visibility = "hidden";
    document.querySelector(y).classList.remove("error-red");
  }

  function showER() {
    document.querySelector(Dom.errorCase).style.visibility = "visible";
    document.getElementsByClassName(Dom.errorDes)[0].innerHTML = "the \" From time \" is already chosen";
    document.querySelector(Dom.inputTimeF).classList.add("error-red");
  }

  var exit;

  return {
      refuseDuplicatedPlans: function(from, to) {
        var exit;
        if (fromT.indexOf(from) === -1) {
          fromT.push(from);
          exit = false;
        } else {
          console.log('value already exist');
          showER();
          exit = true;
        }
    }
  };
})(UIController);


  var controller = (function(interCtrl, UICtrl) {
    var input, newPlan, DOM;

    DOM = UICtrl.getDOMstrings();

      function setupEventListeners() {
        document.querySelector(DOM.inputBtn).addEventListener("click", ctrlAddPlans);

        document.addEventListener("keypress", function(e) {
          if (e.keyCode === 13) {
            document.activeElement.blur();
            ctrlAddPlans();
          }
        });
      }

      function removeFocus() {
        console.log('remove Focus got trigered');

        document.querySelector(DOM.inputTimeF, DOM.inputTimeT, DOM.inputText).addEventListener("focus", function() {
          // document.activeElement.blur();
          console.log("hello world");
        });
      }

      var ctrlAddPlans = function() {
        //3.get the filed input data
        input = UICtrl.getInput();
        console.log(input);
        // 4.Refuse duplicated plans
        interCtrl.refuseDuplicatedPlans(input.inputTimeF, input.inputTimeT);
        //5.add the plan to the internalController
        newPlan = interCtrl.addItem(input.inputDay, input.inputTimeF, input.inputTimeT, input.inputText, input.goingToCkecked);
        //6.add the plan to the UI
        UICtrl.addPlanList(newPlan, input.inputDay);
        //7.clear the fields;
        interCtrl.clearFields(UICtrl.getDOMstrings().inputTimeF, UICtrl.getDOMstrings().inputTimeT, UICtrl.getDOMstrings().inputText);
      };

      return {
        init: function() {
          console.log('the app has started');
          setupEventListeners();
        },
      };
    })(internalController, UIController);

controller.init();
我希望短路在
refuseDuplicatedPlans(
)方法之后出现在控制器模块中当然,如果它返回true,我希望模块停止执行并提前感谢各位。

您的refuseDuplicatedPlans()方法现在不返回任何内容。请添加一个返回语句,如下所示

refuseDuplicatedPlans: function(from, to) {

        var exit;
              if (fromT.indexOf(from) === -1) {
                fromT.push(from);
                exit=false;
              } else {
                console.log('value already exist');
                showER();
                exit=true;
              }
        return exit;
            }
之后,您可以放置if-else调用,如果为true,则停止执行

if(interCtrl.refuseDuplicatedPlans(input.inputTimeF, input.inputTimeT)){
   reutrn;
}

请将您的尝试笔记准确地贴在您被卡住的地方。作为旁注,优化您的语法将使您受益匪浅。变量不是在顶部声明的,您可以通过使用闭包更好地使用函数来处理小任务,而不是使它们与代码的其余部分紧密耦合