JS中的匿名函数递归调用

存不存在一种完全不需要这种给予准确函数名(函数引用变量名)而调用其的方式呢?

我们知道在任何一个function内部,都可以访问到一个叫做arguments的变量。
打印出这个arguments变量的细节:
(function(){console.dir(arguments)})(1,2)

JS_function_arguments_callee.png

可以看出他是Arguments的一个实例,而且从数据结构上来讲,他是一个类数组。他除了类数组的元素成员和length属性外,还有一个callee方法。 那么这个callee方法是做什么的呢?我们来看下MDN:

callee 是 arguments 对象的属性。在该函数的函数体内,它可以指向当前正在执行的函数。当函数是匿名函数时,这是很有用的, 比如没有名字的函数表达式 (也被叫做”匿名函数”)。

//匿名函数的递归调用
(function() {
    alert("?");
    var loop = setTimeout(arguments.callee,1000);
    if (loop >= 10) {clearTimeout(loop);}
})();

你可能感兴趣的:(JS中的匿名函数递归调用)