Ответ 1
Вы можете сделать это с помощью ()
, чтобы он анализировал его как объект, а не оператор, например:
eval("(" + str + ")");
Хотя, сначала следует использовать JSON.parse()
, если браузер поддерживает его.
У меня есть часть отладочной структуры, которая должна иметь возможность запускать объекты eval времени.
В частности, если у меня есть строка, подобная этой "{a: 1, b:2}"
, она должна оценивать ее в объекте с членами a
и b
с этими значениями. Однако, если я делаю eval("{a: 1, b:2}")
, он, кажется, оценивает его как утверждение и говорит что-то о незаконной метке.
Я взломал его так, чтобы он оценивал следующее:
eval("var x=" + str + "; x;");
который, кажется, работает, но кажется ужасным взломом. Любые предложения о том, как сделать это лучше?
(Кстати, я знаю об опасностях eval, но это часть структуры отладки, которая не будет видна фактическим пользователям.)
Вы можете сделать это с помощью ()
, чтобы он анализировал его как объект, а не оператор, например:
eval("(" + str + ")");
Хотя, сначала следует использовать JSON.parse()
, если браузер поддерживает его.