IE6でevalが失敗すると昨日のエントリで書きましたが。
解決しました。あまりにしょうもなくてわざわざこうして書くのも恥ずかしいほど。
昨日、evalが失敗するといって書いたコード。あれは失敗しないコードでした。失敗するコードはこう。
var s = "{ foo: 'FOO', bar: 'BAR', }"; eval("var result = (" + s + ")"); document.write(result.foo);
'BAR'
のうしろにコンマがあります。これがIE6ではエラーになってました。
実のところ、「ここにコンマがあっていいんだろうか?」と一時考えたんですが、IE以外のブラウザでは解釈できているし、ネットで情報を探していたときもこういったコードを見た記憶があります。なので、これを確かめるということを怠ってしまいました。あぁ、恥ずかしい。IEがちゃんとしたエラーメッセージを出してくれればすぐにわかったものを、と責任転嫁もしたくなるところ。
あまりに初歩的な間違いとはいえ、もしかすると同じところでつまづくひとがいるかもしれないので、さらしておきます。
感情面はこの辺にして。
WebKitがもっているような、あるいはFirefoxのFirebugのようなデバッグ環境が、IEにない*1だけで、迷走したのは反省しないといけない。デバッガがないならないなりに、手に入る情報をきちんと検証するということをしないと。慣れた環境やプログラミング言語だけ使っていて、その辺の感覚が甘くなってしまったのかも。
まだまだ精進しないといけないなー。
こうやって試行錯誤して、というか右往左往して書いたコードをGitHubに置いておきます。