js 闭包实例

复制代码
var db = (function() {
// 创建一个隐藏的object, 这个object持有一些数据
// 从外部是不能访问这个object的
var data = {};
// 创建一个函数, 这个函数提供一些访问data的数据的方法
return function(key, val) {
    if (val === undefined) { return data[key] } // get
    else { return data[key] = val } // set
    }
// 我们可以调用这个匿名方法
// 返回这个内部函数,它是一个闭包
})();

db('x'); // 返回 undefined
db('x', 1); // 设置data['x']为1
db('x'); // 返回 1
// 我们不可能访问data这个object本身
// 但是我们可以设置它的成员
复制代码

1.当function里嵌套function时,内部的function可以访问外部function里的变量。

 

2. 外部变量(环境变量?),

包括:

  2.1 全局变量,包括DOM。

  2.2 外部函数的变量或函数。

如果一个函数访问了它的外部变量,那么它就是一个闭包。

从技术上来讲,在JS中,每个function都是闭包,因为它总是能访问在它外部定义的数据。

 

 

 

没return的闭包:

 function closureExample() {
            var temp = 10;
            setTimeout(function () {
                console.log(++temp);
            }, 1000);
        }
        closureExample()

闭包实例:

复制代码
  function demo() {
            var temp = 5;
            function add() {
                console.log(temp++);
            }
            return add;
        }
        var demeInstance = demo();
        //console中调demeInstance,temp就一直加
复制代码

 

posted @   小小高  阅读(230)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2016-09-01 冒泡
2016-09-01 Json.net操作json
点击右上角即可分享
微信分享提示