この小さなコード スニペットが IE8 で機能しない理由を見つけることができませんでした。
var a = {"ff": "test"};
eval('('+a+')');
次のようにエラーが発生しています
']' 期待される"。
この小さなコード スニペットが IE8 で機能しない理由を見つけることができませんでした。
var a = {"ff": "test"};
eval('('+a+')');
次のようにエラーが発生しています
']' 期待される"。
オブジェクトa
を連結して eval された文字列の一部を形成するときに、a.toString()
が呼び出され、 が出力されます[object Object]
。あなたが望むのは{"ff": "test"};
、評価された文字列に連結されるため、それJSON.stringify()
を達成するために使用する必要があります。
これを試して:
eval('('+JSON.stringify(a)+')');
または、最初の行のオブジェクト宣言を引用符で囲むこともできます。
var a = '{"ff": "test"}';
var a = {"ff": "test"};
eval('('+a+')');
これは次のように評価されます。
([object Object])
そして、それは明らかに有効な JavaScript ではありません。データ構造を保持したい場合は、 と を使用できJSON.stringify()
ますJSON.parse()
。
var a_to_json = JSON.stringify(a);
var a_from_json = JSON.parse(a_to_json);