function main()
{
   Hello();
}

function Hello()
{
  // How do you find out the caller function is 'main'?
}

有办法找到调用堆栈吗?


当前回答

我会这样做:

function Hello() {
  console.trace();
}

其他回答

function Hello() {
    alert(Hello.caller);
}

使用严格模式开/关(JavaScript & TypeScript),如果(!)调用者存在,你可以尝试这个

console.log(`caller:${(new Error()).stack?.split('\n')[2].trim().split(' ')[1]}`)

我会这样做:

function Hello() {
  console.trace();
}

你可以得到完整的堆栈跟踪:

arguments.callee.caller
arguments.callee.caller.caller
arguments.callee.caller.caller.caller

直到调用者为空。

注意:它会导致递归函数的无限循环。

你可以使用调试器;在功能上。 打开inspect元素和watch调用堆栈;