我有一个调试框架的一部分,需要能够运行时间eval对象.
具体来说,如果我有这样的字符串,"{a: 1, b:2}"则需要将其评估为具有成员a和b这些值的对象.但是,如果我这样做eval("{a: 1, b:2}"),似乎将其评估为一个声明,并说出一些非法标签.
我已经黑了它,所以它评估如下:
eval("var x=" + str + "; x;");
Run Code Online (Sandbox Code Playgroud)
这似乎工作,但似乎是一个可怕的黑客.关于如何做得更好的任何建议?
(顺便说一句,我知道eval的危险,但这是实际用户不会看到的调试框架的一部分.)
Nic*_*ver 24
您可以使用()它将其解析为对象,而不是语句,如下所示:
eval("(" + str + ")");
Run Code Online (Sandbox Code Playgroud)
但是,JSON.parse()如果浏览器支持,您应首先使用它.
| 归档时间: |
|
| 查看次数: |
11446 次 |
| 最近记录: |