💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] [阮一峰](http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html) ## 1.闭包的理解 > 1.闭包就是能够读取其他函数内部变量的函数 f2就是闭包 > 2.由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。 > 3.所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。 ``` function f1() { var n = 999; function f2() { alert(n); } return f2; } var result = f1(); result(); // 999 ``` ## 2.代码对比理解闭包 ``` var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name;  };  } }; alert(object.getNameFunc()()); //当前this指向window ``` ***** ``` var object = { name: "My Object", getNameFunc: function () { var that = this; 用that接住了this此时this的this指 “My Object” return function () { return that.name; }; } }; alert(object.getNameFunc()()); ```