当用“”声明时,如何获得当前运行的函数名称;foo=函数(){..}”;

How to get the current running function name when declared with "foo = function(){...}"?

本文关键字:函数 foo 运行 声明 何获得 当用      更新时间:2023-09-26

在这种情况下,arguments.callee.name一无所获。

foo = function(){
  console.log(arguments.callee.name);
}

有什么解决办法吗?

您没有命名它,因此它没有名称。

foo = function(){
  return (arguments.callee.name);
};
bar = function foobar() {
  return (arguments.callee.name);
};
function foobar () {
  return (arguments.callee.name);
}
console.log(foo()); //""
console.log(bar()); //"foobar"
console.log(foobar()) //"foobar"

foo()foobar()的区别在于,foo()是一个函数表达式,而foobar()是一个已声明的函数。foo()bar()的区别在于,一个有名字,另一个没有。两者都是函数表达式。声明的函数需要名称,而函数表达式则不需要。有关更多信息,请参阅此规范问题:

var functionName=function(){}vs function functionName(){}