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

有大佬遇到过这个问题吗:这个函数要怎么分析?

有大佬遇到过这个问题吗:这个函数要怎么分析?

哈士奇WWW 2019-11-03 11:27:16
不懂这是什么形式varfunc=(function(a){this.a=a;returnfunction(a){a+=this.a;returna;}})(function(a,b){returna;}(1,2))func(4)//?
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

varfunc=(function(a){
this.a=a;
returnfunction(a){
a+=this.a;
returna;
}
})(function(a,b){
returna;
}(1,2))
func(4)//?
///先将这个自动调用函数作为参数传递,这个函数返回传入的第一个参数a,这里就是返回1
function(a,b){
returna;
}(1,2)
(function(a){
this.a=a;
//当上一次调用时把传入的1赋值给了this.a,
//随即返回了一个回调函数提供给func(4)调用,因为func传入了4,
//4和上一次调用的this.a=1,计算,返回结果5
returnfunction(a){
a+=this.a;
returna;
}
})(function(a,b){
returna;
}(1,2))
func(4);
                            
查看完整回答
反对 回复 2019-11-03
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

(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
抛开是某些沙雕写出来测验的题目以外,平时写这种代码没见过。
少看骚操作代码,从我做起。
                            
查看完整回答
反对 回复 2019-11-03
  • 2 回答
  • 0 关注
  • 321 浏览
慕课专栏
更多

添加回答

举报

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