闭包


title: 闭包
date: 2018-05-27 23:00:00
tags: 闭包
categories: 前端


什么是闭包

    function 函数(){
        var 变量  = 1;
        function 内部函数(){
            console.log(变量);
        }
        return 内部函数;
    }

上面的例子中

  • 内部函数 + 变量(内部函数能访问到这个变量) = 闭包
  • return 内部函数只是为了能使用到这个内部函数 , 也就是能使用闭包
  • 函数套函数是为了隐藏一个变量 或者说这就是闭包的作用

闭包的作用

function create()
{
  var n=999;
  return {
    set : function(aaa){
        n = aaa;
    },
    get : function(){
        return n;
    }
  }
}

var a = create();
var b = create();
a.set(2);
console.log(a.get());
console.log(b.get());
  • 闭包的作用就是间接的访问一个变量 ,隐藏一个变量
  • 去掉那个外层函数 变量就会很容易被直接使用并且修改
  • n 是一个局部变量 ,在函数外面是使用不到这个变量的
  • 这时候get 和 set 函数就是 用来间接访问这个变量的访问器
  • 闭包和变量的作用域有关

在我们写js代码的时候会很容易就出现闭包, 而不是我们经常有意的去创造闭包
引用维基百科:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 以下翻译自Apple官方文档,结合自己的理解记录下来。翻译基于 swift 3.0.1 原文地址 Closure...
    艺术农阅读 5,535评论 0 3
  • 本章将会介绍 闭包表达式尾随闭包值捕获闭包是引用类型逃逸闭包自动闭包枚举语法使用Switch语句匹配枚举值关联值原...
    寒桥阅读 5,442评论 0 3
  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 3,359评论 0 0
  • “加油! 五(5)班,加油!”只见我们班的“功夫熊猫”孙宏斌用金鸡独立挡住了对手踢过来的一个球……猜猜我们在干什么...
    Estrellacai阅读 2,548评论 0 0
  • 失去 你会难过吗? 在客车上的时刻 忽然想到的 生而为人 注定 有纷繁复杂的情感 失去一个人 某些事物 会觉得难过...
    ArtisticYouth阅读 2,361评论 2 1