Конструкция, которую вы привели, создаёт анонимную функцию и тут же запускает её. Внутри её создаётся пространство имён, доступное только в этой функции.
(function () {
var x = 5;
})();
alert( x ); // ReferenceError
Т. о., эта конструкция позволяет создавать переменные, не засоряя глобальное пространство имён. Если переменную нужно вынести в глобальную область видимости, пишите так:
(function () {
var x = 5;
window.x = 5;
})();
alert( x );