JS中的闭包

2018-04-17  本文已影响0人  是刘快啊

什么是闭包

为了便于理解我在代码中使用了中文:

!function(){
  var a = '局部变量a'
  function fn(){
    console.log(a)
  }
  return fn
}

在上面的代码中,在一个立即执行函数中有一个局部变量a,有一个函数fn,在函数fn中可以访问到局部变量a,这就是一个闭包:
如果一个函数使用了它范围外的变量,这个函数+这个变量就叫做闭包。

闭包需要函数嵌套函数,再return一个函数吗?

闭包的作用

闭包用来间接访问一个变量,也就是隐藏变量
例如,不想让人直接访问一个变量a,可以将变量a作为局部变量,在一个立即执行函数里声明变量a,但是局部变量别人又访问不到,所以需要暴露一个访问器(函数),让别人可以间接访问。

!function(){
    var a = '局部变量a'
    window.间接访问a = function(){
        console.log(a)
    }
}

所谓闭包的作用,我们在写代码时并没有刻意地去用闭包,写完以后发现满足了闭包的定义。

原文 方应杭:JS中的闭包是什么

上一篇 下一篇

猜你喜欢

热点阅读