美文网首页
JS中的闭包

JS中的闭包

作者: 是刘快啊 | 来源:发表于2018-04-17 22:35 被阅读0次

什么是闭包

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

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

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

闭包需要函数嵌套函数,再return一个函数吗?
  • 把a嵌套在一个立即执行函数里是为了获得一个局部变量,如果不把a放在函数里,a就是一个全局变量,无法达到闭包的目的——隐藏变量。
    所以嵌套函数是为了获得一个局部变量,与闭包无关。
  • return fn 相当于 window.fn = fn ,这是为了让外面可以访问到fn这个函数。
    所以 return 是为了fn能被使用,也与闭包无关。

闭包的作用

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

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

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

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

相关文章

  • JS闭包大结局(JS闭包系列3)

    在上一篇中再谈JS闭包(JS闭包系列2),我详细的介绍了JS中的变量作用域相关的概念,结合第一节关于JS闭包(JS...

  • 简单的聊一下闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • 浅谈闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

  • JS闭包

    JS闭包 闭包练习

  • 再谈JS闭包(JS闭包系列2)

    这篇文章,来继续谈谈Javascript闭包的剩余问题。因为在上一篇文章中关于JS闭包(JS闭包系列1)主要简单的...

  • 2018-01-10

    js中的闭包 一.什么是闭包 闭包官方的解释是:闭包就是能够读取其他函数内部变量的函数。由于在javascr...

  • js经典题目

    1闭包 链接:学习Javascript闭包(Closure) setTimeout在js单线程中只是放在队列中并未...

  • 前端面试题(持续补充)

    js,node.js基础: 闭包 闭包是能够读取其他函数内部变量的函数。在js中,只有函数内部的子函数可以访问内部...

网友评论

      本文标题:JS中的闭包

      本文链接:https://www.haomeiwen.com/subject/katmkftx.html