代码如下:
有个缺点: 如果不是通过function A(){}这种方式定义的函数取不到函数名称
js 代码
- function getCallStack(){
- var fn, stack;
- if(arguments.length != 2){
- fn = arguments.callee.caller;
- stack = [];
- }else{
- fn = arguments[0];
- stack = arguments[1];
- }
- var fCaller;
- if(fn == null){
- fCaller = "(Top Caller)";
- stack.unshift(fCaller);
- return stack;
- }else{
- var params = /(function\s*([^\(]*)\s*\((.*)\))/.exec(fn.toString());
- if(params != null){
- fCaller = params[1];//"function " + params[1] + "(" + params[2] + ")";
- }else{
- var fnn = fn.toString();
- fnn = fnn.substring(0, fnn.indexOf("\n")==-1 ? 25 : fnn.indexOf("\n"));
- fCaller = "Unknown Caller: " + fnn;
- }
- }
- stack.unshift(fCaller);
- if(fn != null){
- arguments.callee(fn.caller, stack);
- }
- return stack;
- }
有个缺点: 如果不是通过function A(){}这种方式定义的函数取不到函数名称
本文介绍了一个JavaScript函数,用于递归地获取当前执行上下文的调用堆栈。该函数能够显示函数调用的层级关系,对于调试和理解代码执行流程非常有用。需要注意的是,如果函数不是通过标准方式定义,则可能无法获取到准确的函数名称。
3万+

被折叠的 条评论
为什么被折叠?



