那么存不存在一种完全不需要这种给予准确函数名(函数引用变量名)的方式呢?
arguments.callee
我们知道在任何一个 function
内部,都可以访问到一个叫做 arguments
的变量。
(function(){console.dir(arguments)})(1,2)
打印出这个 arguments
变量的细节,可以看出他是 Arguments
的一个实例,而且从数据结构上来讲,他是一个类数组。他除了类数组的元素成员和 length
属性外,还有一个 callee
方法。 那么这个 callee
方法是做什么的呢?我们来看下 MDN
callee
是 arguments
对象的属性。在该函数的函数体内,它可以指向当前正在执行的函数。当函数是匿名函数时,这是很有用的, 比如没有名字的函数表达式 (也被叫做"匿名函数")。
哈哈,很明显这就是我们想要的。接下来就是:
(