なるべく使いたくないけどたまに使うeval
たまになんでエラーかわからないときありますよね
例。こんなの
var str = "{x:1}"; var obj = eval(str); alert(obj.x);
結果
undefined
他のサイトのまるパクですけど理由は下記のようです
「eval("x:〜")」の〜の部分には,「値」ではなく「文」が期待されていたということだ。
http://d.hatena.ne.jp/language_and_engineering/20081022/1224597688
なるほど、strに代入した文字列の{}はただの文のくくりで、その後のxがラベルとして解釈されちゃうんですね。
ググるとよく出てくるカッコでくくってる理由ってそんな感じだったんですね。
こんなやつ↓
eval("(" + abc + ")");
おさらい
ダメな例
var str = "{x:1}"; var obj = eval(str); alert(obj.x);
結果
undefined
良い例
var str = "{x:1}"; var obj = eval("(" + str + ")"); alert(obj.x);
結果
1
たいしたあれではないけどなるほどねーと思ったのでメモ。