Почему выводится undefined в замыкании?
Почему выводится undefined при выводе?
Потому что в строке lodash.set = set();
Вы присвоили имени lodash.set результат выполнения функции set с пустым аргументом (что эквивалентно вызову set(undefined)), а не саму функцию, как вы, вероятно, хотели.
Что то я про такую реализацию модуля не слышал.
Вот так будет работать:(function () {
    function lodash() {
      alert("Lodash");
    }

    function set(item) {
      alert(item);
    };

    lodash.set = set;

    window.lodash = lodash;
  })();

lodash.set(150);