let parseFunction = function (str) {
try {
let str_ = str.replace(/\n/g, ';')
str_ = str_.replace(/\s+/g, '')
str_ = str_.slice(str_.indexOf('function')).replace(/\{\;/g, '{')
if (str_.slice(-1) != '}') {
str_ = str_.slice(0, -1)
}
let p1 = str_.indexOf('){') + 2
let left = str_.slice(0, p1).replace('function(', '').replace('){', '').split(',')
return new Function(...left, str_.slice(p1, -1))
} catch (err) {
console.warn(err)
return new Function()
}
}
- 例子
let funT = `function(a, b) {
console.log(a, b, a + b)
}`
let fun_ = parseFunction(funT)
fun_(1, 2)
fun_('saf', 'sdca**')
-
结果
result.png