An IIFE (Immediately Invoked Function Expression) is a JavaScript function that runs as soon as it is defined. All the functions and variables are scoped inside the IIFE, meaning they can’t be access outside this one.

(function() {
  document.addEventListener("DOMContentLoaded", function(event) {
    var ctas = document.querySelectorAll("button.cta");

    Array.prototype.forEach.call(ctas, function(el, i) {
      var currentCta = ctas[i];

      //Event handler 1 for exemple click
      currentCta.addEventListener("click", function() {
        functionEventHandlerBehavior1(ctas, currentCta);
      });

      //Event handler 2 for exemple touchstart
      currentCta.addEventListener("touchstart", function() {
        functionEventHandlerBehavior2(ctas, currentCta);
      });

      //Event handler 3 for exemple mouseover
      currentCta.addEventListener("mouseover", function() {
        functionEventHandlerBehavior3(ctas, currentCta);
      });
    });
  });

  function functionEventHandlerBehavior1(elements, currentElement) {
    // Do things
  }

  function functionEventHandlerBehavior2(elements, currentElement) {
    // Do things
  }

  function functionEventHandlerBehavior3(elements, currentElement) {
    // Do things
  }
})();

More about IIFE