JavaScriptのスコープについて

オブジェクト指向JavaScriptという本を読んでいて、「へえ、そうなんだ」と思うところが有ったので。

JavaScriptのスコープはコードブロックではなく、関数スコープである

以下のコードを実行した場合、alertダイアログには1が表示される。

(function a() {
  if (true) {
    var b = 1;
  }
  alert(b);
})();

Javaだとif文内で定義された変数はそこから出たら参照出来ないけど、JavaScriptはそんなことない。

参考

オブジェクト指向JavaScript

オブジェクト指向JavaScript