免责声明:我知道您不应该使用eval()
,但是如果我有其他选择,我不会。这一点,您必须信任。
下面的这段代码为什么会引发错误,我该如何做一个等效的表达式?
let r = ".b.b = a.b.b"
let l = {b:{b:5}}
let a = {b:{b:0}}
l.toString()
alert(eval(l+r))
答案 0 :(得分:2)
导致您出错的一件事是您的l.toString()
调用返回了字符串"[Object object]"
。
尝试改用l = JSON.stringify(l)
。
尽管,要使代码段正常工作,您需要完全省略字符串l
。而是将l
仅作为字符串"l"
进行引用,以使评估工作按预期进行。
let r = ".b.b = a.b.b"
let l = {b:{b:5}}
let a = {b:{b:0}}
console.log(eval("l"+r))