Js中的闭包

闭包 是前端面试必问的一个知识点

one: 什么是闭包

two: 闭包的作用是什么

一、变量的作用域

全局变量 局部变量

在Js中函数内部可以直接读取 全局变量,而函数外部 自然无法读取 函数内部的局部变量

栗子1:

var name = 'itxing';  // name为全局变量

function getName() {

    console.log(name)

}

getName()  //itxing

栗子2:

function getName() {

    var name = 'itxing';  //  局部变量

}

console.log(name)  //undefined

二、什么是闭包

MDN对其的理解

闭包是一个函数,特指那些可以访问独立变量的函数(这种独立变量在本地使用,但是却定义在一个封闭的作用域),换句话说这类函数能够记忆创建它们时的环境(很难理解)

栗子3:

function Person() {

    var name = 'itxing';

    function getName() {

        console.log(name)

    }

    return getName

}

var man = Person();

man()  //  'itxing'

函数getName能够访问函数Person内部的变量,那么函数getName变量name这整个环境就可以称之为闭包。在这里man就成了一个闭包,这个闭包由getName()和字符串“itxing”组成。

闭包就是能够读取其他函数内部变量的函数

三、闭包的优缺点

优点:延长外部函数局部变量的生命周期

缺点:容易造成内存泄漏

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 闭包 是前端开发者面试必问的一个知识点。1、什么是闭包?2、闭包的作用是什么? 一、变量的作用域 你要学习和理解闭...
    anonymous66阅读 1,300评论 15 56
  • 今天研究了一波js中的闭包,分享一下自己的理解。 一、变量的作用域 要理解闭包,首先必须理解Javascript特...
    阿布_0caf阅读 274评论 0 2
  • 定义一个函数 function fn(a,b,...rest){var arr;...function fn2()...
    落木兮兮阅读 1,172评论 0 1
  • 怎样才是我们对待弱者最好的态度呢?施已看得见的关爱远不及平常以待,因为最平常的态度往往才最温柔。 最近在微博上看了...
    麽子瞻阅读 238评论 0 0
  • 我们在人生的道路上争先恐后,事务缠身,忙碌而疲惫,总感觉一天忙24小时都不够,却仍然感受不到生活的改变,仍然...
    青Iris阅读 217评论 0 1

友情链接更多精彩内容