javascript - 关于js内嵌函数的问题?
高洛峰
高洛峰 2017-04-11 11:38:41
[JavaScript讨论组]
function functionFunction(str) {
    var f = function(s){
        return str + ", " + s;
    }
    return f;
}

如果我这样调用functionFunction('Hello')('world')后边的('world')代表什么

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(6)
PHP中文网

可以理解这个函数的闭包,当你调用world的时候。functionFunction那一层的的东西不会立即被垃圾回收

高洛峰

functionFunction('Hello')返回一个函数

'world'是返回函数代入的参数

这是闭包相关的概念

高洛峰

这就是闭包了,兄弟

PHP中文网

因为在js中函数也是可以作为返回值的,functionFunction('Hello')是执行functionFunction函数,会返回一个函数,也就是你的函数f,functionFunction('Hello')('world')也就相当于是f('world'),不知道这样说你能不能理解('world')是什么了

ringa_lee
    functionFunction('Hello')('world')
    => (functionFunction('Hello'))('world')
    => f('world')  //str="Hello"
    => "Hello, world"
黄舟

你这么理解:
functionFunction('Hello')
的返回结果是

function(s){
                return 'Hello' + ", " + s;
            }

再吧'world'作为参数传入替代了s的位置, 就变成了Hello, world

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号