您好,匿名用户
随意问技术百科期待您的加入

如何理解这种js代码?

0 投票

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); }
})(4);
document.writeln(a);
用户头像 提问 2012年 12月1日 @ Singed 上等兵 (275 威望)
分享到:

1个回答

0 投票
 
最佳答案

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);
用户头像 回复 2012年 12月1日 @ Brand 上等兵 (185 威望)
选中 2012年 12月1日 @Singed
提一个问题:

相关问题

0 投票
1 回复 32 阅读
0 投票
1 回复 32 阅读
用户头像 提问 2013年 11月21日 @ Pikachu 上等兵 (475 威望)
0 投票
1 回复 36 阅读
0 投票
1 回复 26 阅读
用户头像 提问 2012年 12月1日 @ Aphrodite 上等兵 (185 威望)
0 投票
1 回复 57 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...