Я читал несколько сообщений о закрытии и видел это повсюду, но нет четкого объяснения, как это работает - каждый раз, когда мне просто говорили использовать его...:
// 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)})
тогда новая неназванная функция будет создана как функция "" (msg)...
но тогда почему это не работает?
(function (msg){alert(msg)});
('SO');
Почему это должно быть в одной строке?
Не могли бы вы указать мне несколько сообщений или дать мне объяснение?