首页 > 关于js内嵌函数的问题?

关于js内嵌函数的问题?

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那一层的的东西不会立即被垃圾回收

【热门文章】
【热门文章】