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++
}