letの使用について

{}ブロックでのみ有効な変数を宣言するためにletを使用すれば良いと思い、下記のスクリプトを書いた。
期待する動作は、1,2,1と順番にアラートダイアログで表示する動作だ。
しかし、動作しなかった。
動作確認を行ったブラウザはfirefox3.6.13とIE8だ。

<script type="text/javascript">
var func = function(){
 var x = 1;
 alert(x);
};

var x=1;
alert(x);

{
 //letの使用
 let x = 2;
 alert(x);
}

alert(x);

</script>

原因がわからなかったので、ネットで探していたらこんな記事を見つけた。

JavaScript1.7の新機能

この記事には、下記注意書きがあった。

ブラウザ上でスクリプトを実行する場合は、JavaScriptバージョンを明記しないと let 、yield がキーワードとして認識されない (Bug 351515)

これを受け、JavaScriptバージョンを明記して試してみたら、Firefoxでは、letが認識されて期待する動作となった。しかし、IE8では動作しなかった。どうやらletは使うべきではないようだ。というのが私の結論。

//ここでversionを指定。
<script type="text/javascript; version=1.7">
var func = function(){
 var x = 1;
 alert(x);
};

var x=1;
alert(x);

{
 let x = 2;
 alert(x);
}

alert(x);

</script>