Оба эквивалентны по объему. Функция , объявленная внутри другой функции, не будет глобальной. Разница в том, что вы можете использовать объявленную объявленную функцию в любое время (поскольку она подняла до запуска любого кода), функция, назначенная переменной в качестве выражения, только после того, как вы присвоили это.
(function () {
bar(); // works
function bar() { } // is not global
foo(); // doesn't work
var foo = function () { };
})();