Javascript 如何使用eval()将一个对象指定给另一个对象

Javascript 如何使用eval()将一个对象指定给另一个对象,javascript,eval,Javascript,Eval,免责声明:我知道你不应该使用eval(),但如果我有其他选择的话,我不会这么做。这一点,你必须相信 为什么下面的代码会抛出一个错误,如何生成一个等价的表达式 let r=“.b.b=a.b.b” 设l={b:{b:5} 设a={b:{b:0} l、 toString() 警报(eval(l+r))导致错误的一个原因是l.toString()调用正在返回字符串“[Object Object]” 尝试改用l=JSON.stringify(l) 尽管如此,为了使代码段正常工作,您需要完全省略字符串化

免责声明:我知道你不应该使用
eval()
,但如果我有其他选择的话,我不会这么做。这一点,你必须相信

为什么下面的代码会抛出一个错误,如何生成一个等价的表达式

let r=“.b.b=a.b.b”
设l={b:{b:5}
设a={b:{b:0}
l、 toString()

警报(eval(l+r))
导致错误的一个原因是
l.toString()
调用正在返回字符串
“[Object Object]”

尝试改用
l=JSON.stringify(l)

尽管如此,为了使代码段正常工作,您需要完全省略字符串化
l
。而是将
l
引用为字符串
“l”
,以使eval按预期工作

let r=“.b.b=a.b.b”
设l={b:{b:5}
设a={b:{b:0}

log(eval(“l”+r))
它会抛出什么错误?这可能与缺少的
有关?“你必须信任这个”-不,我不信任。根据我的经验,在几乎所有有人说“我需要评估”的情况下,结果证明这是一个XY问题,最好不用它来解决。你需要它的确切场景是什么?即使你不得不使用
eval
,我也不清楚这段代码试图实现什么。您的预期输出是什么?eval存在并且完全受语言支持,因此不要被保姆愚弄:您完全可以使用它。我仍然不明白为什么家长。孩子[otherobjchild]=otherParent。孩子[otherobjchild]
需要
eval
@EricMORAND MDN甚至有一个很大的章节介绍。我不相信“永远”是有道理的;但它几乎从来都不是最好的选择。
eval('l.b.b=a.b.b')
如何比
l.b.b=a.b.b
更好?老实说,我更喜欢后者,但他的问题是如何让这个eval代码工作。也许他有一个独特的用例?@AndrewSteinheiser几乎所有选择使用
eval
的人都声称自己有一个独特的用例,但几乎所有时候都不是这样。事实上,我所看到的
eval
的合法用法大多是向那些试图找到解决方案而没有提及
eval
的人建议的。我理解你通常不应该使用
eval()
,大多数情况下没有它是可以解决的,但是,这不是不可能的。不久前我就有了它的用例。我们希望能够输入小的javascript代码片段(例如,
if(x>2){return 5}else{return x*2}
),以便对每个项目进行动态、唯一的计算。@vlaz,您如何解释javascript代码,就像预编译的模板一样,而无需评估?我还有另一个观点:几乎所有选择使用eval声明的人都有一个独特的案例,几乎所有的时候都是这样。