В вашем коде переменной 
а присваивается не функция, а результат её вызова, а так как функция ничего конкретного не возвращает, результатом будет underfined.
var a = (function () {
  // "private"
  var b = 10;
  function c() {   //} - это была лишняя скобка
  // интерфейс наружу опущен
  };  
})();
alert(a)
var a = (function () {
  var b = 10;
  return  function c() {alert(b)};  
})();
a();