不懂这是什么形式varfunc=(function(a){this.a=a;returnfunction(a){a+=this.a;returna;}})(function(a,b){returna;}(1,2))func(4)//?
2 回答

慕哥9229398
TA贡献1877条经验 获得超6个赞
varfunc=(function(a){this.a=a;returnfunction(a){a+=this.a;returna;}})(function(a,b){returna;}(1,2))func(4)//?///先将这个自动调用函数作为参数传递,这个函数返回传入的第一个参数a,这里就是返回1function(a,b){returna;}(1,2)(function(a){this.a=a;//当上一次调用时把传入的1赋值给了this.a,//随即返回了一个回调函数提供给func(4)调用,因为func传入了4,//4和上一次调用的this.a=1,计算,返回结果5returnfunction(a){a+=this.a;returna;}})(function(a,b){returna;}(1,2))func(4);

桃花长相依
TA贡献1860条经验 获得超8个赞
(func{}())这种形式是立即执行func函数所以你写的这个可以简化成varfunc=(function(a){this.a=a;returnfunction(a){a+=this.a;returna;}})(1)再简化varfunc=function(a){a+=1;returna;}所以func(4)//4+1->5抛开是某些沙雕写出来测验的题目以外,平时写这种代码没见过。少看骚操作代码,从我做起。
添加回答
举报
0/150
提交
取消