エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

evalできなかった本当の理由

IE6でevalが失敗すると昨日のエントリで書きましたが。
解決しました。あまりにしょうもなくてわざわざこうして書くのも恥ずかしいほど。

昨日、evalが失敗するといって書いたコード。あれは失敗しないコードでした。失敗するコードはこう。

var s = "{ foo: 'FOO', bar: 'BAR', }";

eval("var result = (" + s + ")");

document.write(result.foo);

'BAR'のうしろにコンマがあります。これがIE6ではエラーになってました。
実のところ、「ここにコンマがあっていいんだろうか?」と一時考えたんですが、IE以外のブラウザでは解釈できているし、ネットで情報を探していたときもこういったコードを見た記憶があります。なので、これを確かめるということを怠ってしまいました。あぁ、恥ずかしい。IEがちゃんとしたエラーメッセージを出してくれればすぐにわかったものを、と責任転嫁もしたくなるところ。
あまりに初歩的な間違いとはいえ、もしかすると同じところでつまづくひとがいるかもしれないので、さらしておきます。


感情面はこの辺にして。


WebKitがもっているような、あるいはFirefoxFirebugのようなデバッグ環境が、IEにない*1だけで、迷走したのは反省しないといけない。デバッガがないならないなりに、手に入る情報をきちんと検証するということをしないと。慣れた環境やプログラミング言語だけ使っていて、その辺の感覚が甘くなってしまったのかも。

まだまだ精進しないといけないなー。


こうやって試行錯誤して、というか右往左往して書いたコードをGitHubに置いておきます。

最新 GitHub - mattsan/SimpleChat: simple chat program
2010/05/07時点 GitHub - mattsan/SimpleChat at 9af6ca5cce5594c0be0f10dc8ec59ca82bc55232
MySQLを使うバージョン commit MySQL version · mattsan/SimpleChat@1054039 · GitHub

*1:環境を整えればIEデバッグできるようですが。