Eval()函数替代

问题描述 投票:-1回答:1

我有一个json文件,我正在渲染模板,并有一个像这样的对象

"templateLabelEval":"return $row->['document_code'];"

我正在使用渲染标签

eval(templateLabelEval);

有没有其他替代方法,我可以避免使用eval,因为它被认为是一种不好的做法

javascript php json
1个回答
0
投票

鉴于代码字符串有一个return语句,单独的eval无论如何都不会工作,但你可以使用Function()

var result = Function(data.templateLabelEval)();

这有几乎所有相同的安全问题,但与eval已经(或曾经)的性能问题不同。当然,您应该只执行安全的代码。

为了解释代码,将字符串传递给Function构造函数会创建一个新的函数对象,并将该字符串作为其主体。 (我假设函数现在不需要定义参数。)因此尾随的()立即调用函数,结果存储在result中。

如果需要,可以存储函数本身,然后根据需要多次调用它。

© www.soinside.com 2019 - 2024. All rights reserved.