phpやjsのスコープ

O'reilly javascript 5版を全裸で電車の中でよんだ。4章だ。

jsのスコープが、phpと似た感じだと初めて知った。
例えば if 内で変数を宣言して、そのif文の外でも、その変数が使えてしまうアレだ。

この仕様の利点や、使い方があまりわからない。この仕様って、不具合を作りやすくしてしまうだけの悪い点しか思いつかないんだけど、どういった利点があるんだろう... でも、そういう実装にわざとしてる訳だし、良い点もあるんだろうと思う。教えて!頭のいい人!

<html>
<head>

<script>
function a(){

    if( 1 ) {
        var x= 'holy';
    }
    // if ブロックの外でも使えるのが気持ち悪い。
    // 不具合作りそう..
    alert(x);

}
</script>
</head>
<body onLoad="a();">
js scope sample
</body>
</html>