eval

JavaScriptを書いていて当たり前な事がぶっ飛んでいたので改めて整理。
evalでサーバーから受け取った文字列等々を評価させる場合、評価対象の文字列はJavaScriptの式で無ければならない。
なので、次の様に書くとエラーになる。

rcvstr = "{'foo':100, 'bar':200}";
ev = eval(rcvstr);

上を実行すると、"SyntaxError: invalid label"となる。
一方、

rcvstr = "({'foo':100, 'bar':200})";
ev = eval(rcvstr);

上との違いは()でくくった文字列にしたこと。
この様にして実行すると、

Object foo=100 bar=200

と正常に評価される。()でくくった事によって、「式」になったから。という風に解釈したのだが、これで良いのだろうか。。。
そもそも、firebugとかのコンソールで試してみたところ、

>>> {"a":100}
SyntaxError: invalid label

となって、

>>> ({"a":100})
Object a=100

と、正常に評価されるので。


うむ、体育の日に屋内でプログラムを朝から書いているのはいいことなのだろうか。