我注释了下我的思路
我这样想正确吗?
后面问号的我不懂什么意思
可以帮我解释下吗?这种函数应用场景是什么
(function(){
})(function(){
}())
这种立即调用函数里面再写一个立即调用函数的写法叫什么?
var fun = (function(a){//定义函数表达式并定义参数a
this.a = a;//定义当前域变量a等于参数a
return function(a){//返回一个匿名函数定义参数a
a+= this.a;//a等于this.a+1
return a;//返回a
}
})(function(a,b){//??????
return a;//????
}(1,2))//??????
fun(4)
楼主的变量用得有点乱, 先给你改改.
每个函数都有一个单独的作用域, 除非特殊情况, 定义函数的形参时尽量不要用一样的. 不然会绕.
以上总共出现了三个函数:
函数1: 参数为a
功能: 接收一个值, 将这个值赋给this.a, 并返回函数2.
函数2: 参数为num
功能: 接收一个值, 返回这个值 + this.a
函数3: 参数为x,y
功能: 接收两个值, 返回第一个值.
函数功能已经分析清楚啦, 那就来看看上面的代码都发生了什么.
函数1需要一个参数, 把函数3当做参数传进去了, 函数3接收两个参数然后返回第一个(此处是1), 就相当于直接把1当做参数传递给了函数1.
函数1接收参数后先为执行对象定义一个属性a, 然后将传递进来的参数赋值给属性a. 再然后返回函数2.
函数2接收一个参数(此时是4), 返回这个参数 + this.a
故返回了5.