(function(){..})()の確認
<script> hoge=(function(v){alert(v)})("aa"); alert(hoge); </script>ってやると、undefinedになる。
これはカッコの中でreturnしてないからってことですよね。
何も返すものないからhogeは何もなしと。
<script> hoge=(function(v){alert(v)};return v)("aa"); alert(hoge); </script>
なら、ちゃんとaaが出る。
<script> (function(v){alert(v)}("aa")); hoge=function(v){alert(v)}; hoge("bb"); </script>ってやった場合、ローディングが終わったら alert("aa"); alert("bb") が実行される。
こっちはhogeに関数が入り、その後hogeにbbという引数を渡して実行しているから両方出ると。
後半読んでも前半の違いについてよくわからなかったのでまとめてみた。