В вашем конкретном примере нет преимущества. Но вы можете использовать первую версию, чтобы скрыть некоторые переменные:
var NS = function() {
var private = 0;
return {
method_1 : function() {
// do stuff here
private += 1;
},
method_2 : function() {
// do stuff here
return private;
}
};
}();
Это упоминается как Модуль в «JavaScript: Хорошие части» Дугласа Крокфорда. Если вы будете искать в Интернете, вы сможете найти полные объяснения.
По сути, единственная вещь, которая создает новую область видимости переменной в Javascript, - это функция, поэтому большая часть глобального сокращения вращается вокруг использования свойств объекта (в данном случае NS) или использования функции для создания области видимости переменной (частный var в этом примере).