私はクロージャに関するいくつかの投稿を読んでいて、これをどこでも見ましたが、それがどのように機能するかについての明確な説明はありません-私がちょうどそれを使用するように言われたたびに...:
// 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
})();
OK、新しい無名関数を作成して実行することがわかりました。したがって、その後、この単純なコードは機能するはずです(そして機能します):
(function (msg){alert(msg)})('SO');
私の質問は、ここでどのような魔法が起こるのかということです。私が書いたとき、私は思った:
(function (msg){alert(msg)})
次に、関数 ""(msg)..のように名前のない新しい関数が作成されます。
しかし、なぜこれが機能しないのですか?
(function (msg){alert(msg)});
('SO');
なぜ同じ行にある必要があるのですか?
いくつかの投稿を教えていただけますか、それとも説明をお願いします。