Js利用正则表达式获得回调函数的函数名

function getArgs(func) {

// 先用正则匹配,取得符合参数模式的字符串.

// 第一个分组是这个: ([^)]*) 非右括号的任意字符

var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[1];

// 用逗号来分隔参数(arguments string).

return args.split(",").map(function(arg) {

// 去除注释(inline comments)以及空格

return arg.replace(/\/\*.*\*\//, "").trim();

}).filter(function(arg) {

// 确保没有 undefined.

return arg;

});

}

function run(fn){

if(typeof fn ==="function"){

console.log(fn) //在主函数体可以看到回调函数的一切

var name=getArgs(fn)[0]

alert(name)

}

}

run(function(a){ //回调函数是匿名或者有名都可以用这个方法获得

a++

})

function add(a){

a++

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容