码迷,mamicode.com
首页 > Web开发 > 详细

js 闭包实例

时间:2017-09-01 18:54:13      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:设置   col   方法   技术   closure   data   code   object   instance   

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 闭包实例

标签:设置   col   方法   技术   closure   data   code   object   instance   

原文地址:http://www.cnblogs.com/gaocong/p/7464512.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!