js 闭包实例

Posted 小小高

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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就一直加

 

以上是关于js 闭包实例的主要内容,如果未能解决你的问题,请参考以下文章

JS之闭包的应用

js 闭包实例

js 闭包

JS中由闭包引发内存泄露的深思

Spark闭包与序列化

js闭包是啥?