我有一个json文件,我正在渲染模板并有一个像
这样的对象"templateLabelEval":"return $row->['document_code'];"
我使用
渲染标签eval(templateLabelEval);
还有其他替代方法,我可以避免使用eval,因为它被认为是一种不好的做法
答案 0 :(得分:0)
鉴于代码字符串包含return
语句,eval
单独无效,但您可以使用Function()
。
var result = Function(data.templateLabelEval)();
这几乎具有所有相同的安全问题,但与eval已经(或曾经)的性能问题不同。所以当然,你应该只执行安全的代码。
要解释代码,将字符串传递给Function
构造函数会创建一个新的函数对象,并将该字符串作为其主体。 (我假设函数现在不需要定义参数。)因此尾随()
立即调用函数,结果存储在result
中。
如果需要,您可以存储函数本身,然后根据需要多次调用它。