javascript - 嵌套函数和闭包:内部函数形成了一个闭包,把内部函数当作返回值返回?
PHPz
PHPz 2017-04-10 16:39:15
[JavaScript讨论组]
function outside(x) {
  function inside(y) {
    return x + y;
  }
  return inside;
}
// Think of it like: give me a function that adds 3 to whatever you give it
fn_inside = outside(3); 
result = fn_inside(5); // returns 8

result1 = outside(3)(5); // returns 8

"outside(3)(5)"怎样理解;为什么result1得到的返回值是8?

PHPz
PHPz

学习是最好的投资!

全部回复(3)
高洛峰

这是一个典型的闭包。
outside(3)(5)是连续的两次函数调用。
分开理解就容易多了:

var inside = outside(3);
var result = inside(5);
  • 第一次调用外部函数outside,返回值inside就是内部函数,并且内部函数以闭包的形式捕获了变量x

  • 第二次调用第一次返回的内部函数inside,执行加法(将闭包捕获的3与参数5相加),返回值为Number类型的值8。

阿神

很简单的闭包!这是一个闭包教程https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

阿神

第一次调用fn_inside = outside(3); 由于闭包依赖原则 3这个值将会被保存在内存中不会因为调用结束而delete掉,第二次调用会直接执行内部闭包函数返回X+Y 的值也就是8

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

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