a在这里并不表示一个函数,如果它要表示定义函数会这么写
var a = function(n){
if(n<1){ alert("invalid arguments"); return 0; }
if(n==1){ return 1; }
else{ return n * arguments.callee(n-1); }
};
显然问题中的写法中a
被赋值的是这个函数的执行结果。这是一种匿名函数的执行写法,如果不好理解你可以分解来看。比如上面的代码可以分解成
// 这是匿名函数, 我们给它定义个名字以便理解
var myfunc = function(n){
if(n<1){ alert("invalid arguments"); return 0; }
if(n==1){ return 1; }
else{ return n * arguments.callee(n-1); }
};
// 执行匿名函数并赋值
var a = myfunc(4);
document.writeln(a);