私は閉鎖についてのいくつかの投稿を読んでいて、これをどこでも見ましたが、それがどのように機能するのか明確な説明はありません-私はちょうどそれを使用するように言われたたびに...:
// 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');
なぜ同じ行にある必要があるのですか?
私にいくつかの投稿を指摘したり、説明をいただけますか?
(function (msg){alert(msg)})('SO');
はそれ自体で完全に機能します。それはあなたがその前に投稿した他の匿名関数とは何の関係もありません。これらは2つの完全に分離された匿名関数です。無名関数は名前がなく、後で参照できないため、すぐに呼び出す必要があります。