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>
原因がわからなかったので、ネットで探していたらこんな記事を見つけた。
この記事には、下記注意書きがあった。
ブラウザ上でスクリプトを実行する場合は、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>