如何理解这种js代码?

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);


噜噜哒
浏览 374回答 1
1回答

阿晨1998

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

相关分类

JavaScript