Eval()函数替代

时间:2018-03-14 21:50:13

标签: javascript php json

我有一个json文件,我正在渲染模板并有一个像

这样的对象
"templateLabelEval":"return $row->['document_code'];"

我使用

渲染标签
eval(templateLabelEval);

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

1 个答案:

答案 0 :(得分:0)

鉴于代码字符串包含return语句,eval单独无效,但您可以使用Function()

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

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

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

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