使用“foo = function(){...}”声明时如何获取当前运行的函数名?

时间:2015-02-05 02:19:41

标签: javascript

在这种情况下,arguments.callee.name什么都没有。

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

有没有解决方案?

1 个答案:

答案 0 :(得分:0)

你没有给它命名,因此它没有名字。

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() {}