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