下記一.二.はそれぞれ何が違うでしょうか?
・それぞれメリットデメリットあれば教えてください


ブラウザ以外
・一.はブラウザ以外でもaがグローバル変数になるので、一の方が良い?

ブラウザの場合、同じ意味?
・普通はどちらを使うとかあるでしょうか?


一.

(function() {
 a = 1;
})()
console.log(a); //1

二.

(function() {
 window.a = 1;
})()
console.log(a); //1

あるいは、下記のような書き方の方が良いでしょうか?

var a;
(function() {
 a = 1;
})()
console.log(a); //1