diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 9d0302ba..70a68cb3 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -314,6 +314,11 @@ export const JSONStringify = (data: T) => { ) } +export const evalFn = (fn: string) => { + var Fun = Function // 一个变量指向Function,防止前端编译工具报错 + return new Fun('return ' + fn)() +} + /** * * JSON反序列化,支持函数和 undefined * @param data @@ -329,12 +334,12 @@ export const JSONParse = (data: string) => { } // 还原函数值 if (typeof v === 'string' && v.indexOf && (v.indexOf('function') > -1 || v.indexOf('=>') > -1)) { - return eval(`(function(){return ${v}})()`) + return evalFn(`(function(){return ${v}})()`) } else if (typeof v === 'string' && v.indexOf && v.indexOf('return ') > -1) { const baseLeftIndex = v.indexOf('(') if (baseLeftIndex > -1) { const newFn = `function ${v.substring(baseLeftIndex)}` - return eval(`(function(){return ${newFn}})()`) + return evalFn(`(function(){return ${newFn}})()`) } } return v