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