zoukankan      html  css  js  c++  java
  • 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就一直加
  • 相关阅读:
    Centos安装JIRA 7.13版本(自己在官方下载最新版)以及破解
    5. iphone 的:active样式
    4. css事件
    3. css百度制作字体图片
    8. react 常用组件
    3. JS生成32位随机数
    JS大小转化B KB MB GB的转化方法
    7.关于一些dom&&获取元素
    加密问题
    2.hover的使用
  • 原文地址:https://www.cnblogs.com/gaocong/p/7464512.html
Copyright © 2011-2022 走看看