将能转换为函数的字符串转换为函数

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

你可能感兴趣的:(将能转换为函数的字符串转换为函数)