JavaScriptにはブロックスコープがありません。
下図の例では、ifブロック内で宣言している変数xに、ブロック外からもアクセスできています。
これがブロックスコープを持つ言語~例えばC#~なら、エラーです。
正しくは↓ですね。
var a = 0; if(true){ a = 1; } Console.WriteLine(a);
JavaScriptのブロックスコープなしは宣言してすぐ使えるという意味では便利ですが、コードの堅牢性が下がる要因になるので、要注意だなぁ…
ツッコミ歓迎