function functionFunction(str) {
var f = function(s){
return str + ", " + s;
}
return f;
}
如果我这样调用functionFunction('Hello')('world')后边的('world')代表什么
因为在js中函数也是可以作为返回值的,functionFunction('Hello')是执行functionFunction函数,会返回一个函数,也就是你的函数f,functionFunction('Hello')('world')也就相当于是f('world'),不知道这样说你能不能理解('world')是什么了
functionFunction('Hello')('world')
=> (functionFunction('Hello'))('world')
=> f('world') //str="Hello"
=> "Hello, world"
functionFunction('Hello')
返回一个函数
'world'
是返回函数代入的参数
这是闭包相关的概念
你这么理解:functionFunction('Hello')
的返回结果是
function(s){
return 'Hello' + ", " + s;
}
再吧'world'作为参数传入替代了s的位置, 就变成了Hello, world
这就是闭包了,兄弟
可以理解这个函数的闭包,当你调用world的时候。functionFunction那一层的的东西不会立即被垃圾回收