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

\color{red}{不要在chrome的启动页测试这段代码,会被误识别为浏览器插件代码}

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容