Почему JavaScript вызывает функцию, определенную внутри closour?

Я видел много js-фреймворков (включая jquery), использующих замыкание вокруг своей основной функции. Например,

var obj = (function(){
    return {
        test : function(){
            alert('test');
        }
    }
})();
obj.test()

Источник jquery, http://code.jquery.com/jquery-1.7.2.js

Зачем нужно это дополнительное "закрытие" вокруг "функции"? Или какая разница, если мы используем его, как,

var obj = function(){
    return {
        test : function(){
            alert('test');
        }
    }
}();
obj.test()

Оба имеют одинаковое поведение, и само определение функции помещает все локальные переменные в новую область видимости... так зачем дополнительное закрытие?

2 ответа

Решение

Он добавляет "большой" объект \ библиотечные функции, а не добавляет их в глобальный объект.

Вставленные вами два параметра аналогичны разнице между:

var foo = (2);
var foo = 2;

Нет разницы...


Обновить:

Теперь я понимаю ваш вопрос: скобки не создают новую область видимости в javascript, только функции.

Это просто соглашение, позволяющее легко отличать самовыполняющиеся функции от обычных функций.

Другие вопросы по тегам