Зачем вам нужно вызывать анонимную функцию в той же строке?

Я читал некоторые посты о замыканиях и видел это повсюду, но нет четкого объяснения, как это работает - каждый раз, когда мне просто говорили использовать его ...

// Create a new anonymous function, to use as a wrapper
(function(){
    // The variable that would, normally, be global
    var msg = "Thanks for visiting!";

    // Binding a new function to a global object
    window.onunload = function(){
        // Which uses the 'hidden' variable
        alert( msg );
    };
// Close off the anonymous function and execute it
})();

Хорошо, я вижу, что мы создадим новую анонимную функцию и затем запустим ее. Итак, после этого этот простой код должен работать (и он работает):

(function (msg){alert(msg)})('SO');

У меня вопрос, какая магия здесь происходит? Я думал, что когда я написал:

(function (msg){alert(msg)})

тогда будет создана новая безымянная функция, подобная функции & quot; & quot; (msg) ...

но тогда почему это не работает?

(function (msg){alert(msg)});
('SO');

Почему это должно быть в одной строке?

Не могли бы вы указать мне несколько постов или дать мне объяснение?

Ответы на вопрос(19)

Ваш ответ на вопрос