JavaScriptにはブロックスコープがありません。
下図の例では、ifブロック内で宣言している変数xに、ブロック外からもアクセスできています。

これがブロックスコープを持つ言語~例えばC#~なら、エラーです。

正しくは↓ですね。
var a = 0;
if(true){
a = 1;
}
Console.WriteLine(a);
JavaScriptのブロックスコープなしは宣言してすぐ使えるという意味では便利ですが、コードの堅牢性が下がる要因になるので、要注意だなぁ…