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