其实就是给匿名函数起个名字(这还算是匿名吗?)
this的绑定就不说了,关键是临时的名字完全不污染名字空间。
var name = 'Jack';
function count(n){
alert('Oh, ' + this.name + ' have ' + n + ' books to read!');
}
// 关键是这里的 count 的可见性 和 this的指向
var countDown = function count(n){
alert(n + '...[' + this.name + ']');
if(n > 0)
count(n - 1);
}
var countDown2 = function(n){
alert(n + '***[' + this.name + ']');
if(n > 0)
arguments.callee(n - 1);
}
count(7);
countDown(2);
countDown2(1);
请参考这里来深入学习: 避免使用arguments.callee