语法错误,而eval()的一个对象
我试图parsing一个像这样的对象,使用nodejs:
{ 1: [a, b, c], 2: [d, e, f], ... }
与a,b,c,d,e,f
variables与定义的值。
我真的很想这样,这个对象可以真正被读取(可以被人类写入)。
所以,我现在正在做的是打开一个包含前一个对象的文件,将数据放在一个可变data
,然后注入
var a=1,b=2,c=3,d=4,e=5,f=6,...;
就在真正的内容之前:
data = "var a=1,b=2,c=3,d=4,e=5,f=6,...;" + data;
最后,我使用eval()
来获得一个可用的对象:
my_obj = eval(data);
然而,这不起作用(至less使用nodejs),在对象的第二个元素之后(在前面的例子中紧跟在2之后)的:
token上带有SyntaxError。
为了解决这个问题,我现在正在围绕我的对象:
data = "var obj = " + data + "; obj"; data = "var a=1,b=2,c=3,d=4,e=5,f=6,...;" + data;
与此同时,它的工作。
问题是why ?
可选的问题是:你有更好的方法来实现我想要的吗?
谢谢!
eval()调用之前的真实数据
data
与SyntaxError:
var a='a',b='b',c='c',d='d',e='e',f='f'; { a: [a, a, a], b: [b, b, b] }
Nodejs错误:
undefined:6 b: ^ SyntaxError: Unexpected token :
工作data
:
var a='a',b='b',c='c',d='d',e='e',f='f'; var obj = { a: [a, a, a], b: [b, b, b] } ; obj;
当你第一次评价
{ a: [a, a, a], b: [b, b, b] }
括号实际上被认为是分隔块的分隔符(如if(){…})
所以你正试图执行代码
a: [a, a, a], b: [b, b, b];
这显然是一个语法错误=>你得到的“SyntaxError:意外的令牌:”
在第二种情况下,评估的代码是有效的JavaScript,这就是为什么它的工作原理。
很难为您提供更好的select。 也许使用JSON.parse而不是直接评估,如果你的文件不能被信任。