我有以下代码:
var b = function() {
try {
console.log('b is called')
console.log(arguments.callee.caller.toString())
} catch (e) {
console.log(e)
}
}
var a = function() {
setTimeout(b, 0)
}
a()
为什么输出显示arguments.callee.caller
是null
?
答案 0 :(得分:0)
当您处理成千上万行代码时,很容易忘记几年前编写的 。
问题在于,当您从console
或通过全局变量调用函数时,然后是arguments.callee.caller === null
。您可以在任何对调试有用的功能中使用下面的代码。
console.log((arguments.callee.caller === null) ? 'Console or Global Variable Declaration' : arguments.callee.caller.toString().split('function ')[1].split('(')[0]);
如果您在跟踪诸如全局变量之类的内容时遇到麻烦,则:
false
。