为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解这种js代码?

如何理解这种js代码?

噜噜哒 2019-03-12 17:19:59
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);
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-04-11
  • 1 回答
  • 0 关注
  • 373 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信